그냥 블로그

[ C++ ] 오버로딩과 디폴트 인자 본문

C++/기본 문법 및 개념

[ C++ ] 오버로딩과 디폴트 인자

코딩하는 공대생 2023. 10. 18. 09:40
반응형

 

오버로딩

같은 함수 이름으로 두가지 이상 함수 정의가 있다면 이것을 오버로딩이라 부른다. 

형식 매개변수에서 1) 다른 개수를 가지거나 2) 다른 형의 형식 매개변수를 가져야 한다. 함수 호출이 존재할 때 컴파일러는 함수 호출의 인자와 일치하는 형식 매개변수의 개수와 형을 가지는 함수 정의를 사용한다.

double unitPrice(int diameter, double price);

double unitPrice(int length, int width, double price);

 

오버로딩 해결을 위한 규칙

1. 정확한 일치 : 인자의 개수와 형이 정확하게(자동 형 변환 없이) 정의와 맞는다면 그것이 사용된다.

2. 자동 형 변환을 사용한 일치 : 정확하게 일치하지 않지만 자동 형 변환을 사용해 일치된다면 그 정의를 사용한다.

 

디폴트 인자 

함수에선 여러 개의 call-by-value에 대한 디폴트 인자를 기술할 수 있다. 만일, 대응하는 인자가 생략되면 디폴트 인자로 대체된다. 

디폴트 인자들은 함수 선언에서 주어지는 것이지 함수 정의에서 주어지는 것은 아니다. 

모든 디폴트 인자는 가장 오른쪽에 위치해야한다.

double unitPrice(int diameter, double price = 1.0);

double unitPrice(int length, int width, double price = 1.0);