오늘은 맑음

c++ 함수 overloading 및 default 매개변수 본문

Language/c, c++

c++ 함수 overloading 및 default 매개변수

자전거 타는 구구 2018. 10. 15. 11:21
반응형

함수 overloading

C에서는 없는 overloading기능이 C++에 추가되었다.

만약 C에서 아래의 두 함수가 선언되있다면 어떻게될까?

 

int add(int a);

int add(int a, int b);

 

C에서는 컴파일 오류가 발생할 것이다.

C++에서는 매개변수와 함수명을 이용해 함수를 판단하기 때문에 오류가 발생하지 않는다.

하지만 overloading시 주의사항이 있다.

매개변수의 형태가 같지만 반환형이 다른경우에는 overloading이 되지 않는다.

 

 

default 매개변수

C++에서는 default 매개변수를 선언할 수 있다.

int add(int a=1);

int add(int a){

return ++a;

}

위와 같은 함수가 선언되어 있으며 main에서 add();라고 함수를 호출한다면 결과값은 어떻게 출력이 될까?

결과는 2가 출력이 된다.

default 매개변수가 1로 선언되어 있어 매개변수를 전달하지 않는다면 자동으로 1이 매개변수로 들어가기 때문이다.

 

default 매개변수는 여러개를 선언할 수 있다.

int add(int a=1, int b=2, int c=3...);

default 매개변수를 선언할때 주의사항이 있다.

매개변수는 전달될 때 왼쪽부터 채워지며 전달되지 않은 매개변수는 default매개변수로 채워진다.

따라서 함수를 선언할 때 default 매개변수는 다음과 같이 우측에 위치해야 한다.

int add(int a, int b=1, int c=2);

만약 int add(int a=1, int b);와 같이 함수가 선언되면 컴파일 오류가 발생할 것이다.

 

 

반응형
Comments