※요약
함수 오버로딩이란, 서로 다른 여러 개의 함수가 하나의 이름을 공유(연결)하는 것이다.
함수 오버로딩은 서로 다른 데이터형을 대상으로 하지만 기본적으로는 같은 작업을 하는 함수들에만 사용하는 것이 좋다.
※특징
- C++은 함수 호출 시 함수의 이름과 전달되는 인자의 정보를 참조하여 호출할 함수를 결정한다.
- 함수 오버로딩의 열쇠는 전달 인자이며, 이것을 함수 시그내처( function signature )라고 한다.
- 함수 오버로딩의 조건은 매개 변수의 자료형, 매개 변수의 개수, 매개 변수의 순서 등이다.
※예문
↓ (O)매개 변수의 자료형이 다르므로 함수 오버로딩 성립
void print( float fNum ) { . . . } |
void print( int nNum ) { . . . } |
↓ (O)매개 변수의 개수가 다르므로 함수 오버로딩 성립
void print( int nNum1 ) { . . . } |
void print( int nNum1, int nNum2 ) { . . . } |
↓ (X)반환형의 차이는 함수 오버로딩의 조건에 포함되지 않는다.
void print( int nNum1 ) { . . . } |
int print( int nNum1 ) { . . . } |
※예제
#include <iostream> using namespace std; void print( int nNum ); void print( int nNum1, int nNum2 ); void print( float fNum ); void print( double dNum ); int main( ) { print( 5 ); print( 6, 8 ); print( 3.14f ); print( 50.5 ); return 0; } void print( int nNum ) { cout << nNum << endl; } void print( int nNum1, int nNum2 ) { cout << nNum1 << " and " << nNum2 << endl; } void print( float fNum ) { cout << "float : " << fNum << endl; } void print( double dNum ) { cout << "double : " << dNum << endl; }
'C/C++ 문법 > C++ 문법 임시' 카테고리의 다른 글
[C++] 05. 인라인 함수 - inline function (1) | 2014.01.23 |
---|---|
[C++] 04. 매개변수의 디폴트 값 (0) | 2014.01.22 |
[C++] 02-02. scanf를 대신하는 cin (0) | 2014.01.22 |
[C++] 02-01. printf를 대신하는 cout (0) | 2014.01.21 |
[C++] 01. Hello World (0) | 2014.01.21 |