동일한 범위에서 동일한 함수 이름에 대해 여러 정의를 가질 수 있습니다. 함수의 정의는 인수 목록의 인수 유형 및/또는 수에 따라 서로 달라야 합니다. 반환 유형만 다른 함수 선언은 오버로드할 수 없습니다.
함수 오버로딩은 기본적으로 컴파일 시간 다형성입니다. 함수 서명을 확인합니다. 서명이 동일하지 않으면 오버로드될 수 있습니다. 함수의 반환 유형은 함수 오버로딩에 영향을 주지 않습니다. 반환 유형이 다른 동일한 함수 서명은 오버로드되지 않습니다.
다음은 동일한 함수 print()가 다른 데이터 유형을 인쇄하는 데 사용되는 예입니다.
예시 코드
#include <iostream> using namespace std; class printData { public: void print(int i) { cout << "Printing int: " << i << endl; } void print(double f) { cout << "Printing float: " << f << endl; } void print(char* c) { cout << "Printing character: " << c << endl; } }; int main(void) { printData pd; pd.print(5); // Call print to print integer pd.print(500.263); // Call print to print float pd.print("Hello C++"); // Call print to print character return 0; }
출력
Printing int: 5 Printing float: 500.263 Printing character: Hello C++