본문 바로가기

C++/기초

[C++] 오버로딩, 디폴트 매개변수, 초기화

  1. 함수의 오버로딩(function overloading)
    • 매개 변수가 자료형과 갯수가 다를 시, 동일 함수명 사용 가능
    • 동일 기능 함수, 매개변수 자료형에 따라 상관없이 사용하고자 이용
      1. C언어
        • 함수 이름 호출
        • 매개변수 자료형 다를 시 동일 이름 함수 정의 불가
      2. C++
        • 함수 이름, 매개변수 정보까지 참조
        • 매개변수 자료형 또는 갯수가 다를 시, 오버로딩 가능
#include <stdio.h>
#include <iostream>
#include <iomanip>

using namespace std;

namespace test {
    int plus(int a, int b) {
        return a + b;
    }

    // 매개변수 자료형이 다른경우.
    double plus(int a, double b) {
        /*
        * return이 int로 해놓고 왜 12가 출력되나 엄청 고민했다.
        * int로 형변환이 일어날 경우, 반올림되지 않고 소수점을 전부 버린다.
        */
        return a + b;
    }

    // 매개변수 갯수가 다른경우.
    int plus(int a, int b, int c) {
        return a + b + c;
    }
}


void main() {
    cout << test::plus(1, 2) << endl;
    cout << test::plus(10, 2.795f) << endl;
    cout << test::plus(10, 27, 10) << endl;
}

result

  1. 디폴트(Default) 매개변수
    • 함수를 호출할 때, 매개변수를 넣지 않았을 경우 디폴트값으로 초기화
    • 함수의 매개변수 갯수를 줄이는 기능
#include <stdio.h>
#include <iostream>
#include <iomanip>

using namespace std;

namespace test {

    int defaultTest1(int a = 10, int b = 5) {
        return a + b;
    }

    int defaultTest2(int a, int b = 100) {
        // default 매개변수는 뒤에서부터 채워야함
        return a + b;
    }
}


void main() {

    cout << test::defaultTest1() << endl;
    cout << test::defaultTest2(70) << endl;

}

result

3. C++ 스타일 초기화

C C++
int val = 20; int val(20);
// 선언 시에만 사용
val = 30; val = 30;
// val(30); 사용 불가

둘 다 동작함.

'C++ > 기초' 카테고리의 다른 글

[C++] 동적할당  (1) 2023.12.18
[C++] 래퍼런스(Reference) 변수, 포인터(Pointer) 변수  (0) 2023.12.15
[C++] bool 자료형  (0) 2023.12.14
[C++] namespace  (0) 2023.12.14
[C++] cin, cin.get, cout, fflush  (0) 2023.12.14