C++/C++ 기본

함수 중복

검정비니 2018. 7. 28. 17:34
728x90
반응형

함수 중복




C++에서는 C 언어와 달리 같은 이름의 함수를 여러 개 만들 수 있으며 이것을 함수 중복(function overloading)이라고 부른다.


함수 중복은 다형성의 한 사례이다. 함수 중복은 전역 함수와 멤버 함수에 모두 적용되며, 상속 관계에 있는 기본 클래스와 파생 클래스 사이에도 가능하다.




1. 중복 함수 조건



함수 중복이 가능하려면 다음 조건이 동시에 만족되어야 한다.


1) 중복된 함수들의 이름이 동일하여야 한다.

2) 중복된 함수들은 매개 변수 타입이나 매개 변수의 개수가 달라야 한다.

3) 함수 중복에 리턴 타입은 고려되지 않는다.



- 함수 중복의 성공 사례


다음은 매개 변수의 타입이나 매개 변수의 개수를 다르게 함으로써 함수 중복을 가능하게 만든 예시이다.


i.e.

int sum(int a, int b, int c) {

return a + b + c;

}

double sum(double a, double b) {

return a + b;

}

int sum(int a, int b) {

return a + b;

}


위의 경우, 컴파일러는 sum() 함수의 호출문에서 매개 변수 개수와 타입에 따라 중복된 함수를 찾아서 연결한다.



- 함수 중복 실패 사례


컴파일러는 중복된 함수를 구분할 때 리턴 타입은 전혀 고려하지 않는다. 그저 매개 변수의 타입과 개수만이 함수 중복의 실패 여부를 따지는 요소이다. 그렇기에 다음 예제처럼 매개 변수의 타입과 개수가 모두 동일하면 아무리 리턴 타입이 다르다고 해도 함수 중복에 실패하게 된다.


i.e.

int sum(int a, int b) {

return a + b;

}

double sum(int a, int b) {

return (double) (a + b);

}




2. 함수 중복의 편리함



함수 중복의 최대 장점이라면 역시 새로운 이름을 생각해 낼 필요가 없다는 것이다. 함수 중복의 경우 함수의 이름이 모두 동일하게 된다. 따라서, 호출 시에 매개 변수의 개수나 타입에만 신경쓰면 되기 때문에 작명의 고통을 덜어준다는 이점이 있다.


또한, 함수의 이름이 같기에 함수를 잘못 호출할 위험 역시 줄일 수 있다.

반응형

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

static 멤버  (0) 2018.07.31
디폴트 매개 변수  (0) 2018.07.30
대입 연산자  (0) 2018.07.28
묵시적 복사 생성  (0) 2018.07.28
복사 생성자  (0) 2018.07.27