※요약

함수 오버로딩이란, 서로 다른 여러 개의 함수가 하나의 이름을 공유(연결)하는 것이다.

함수 오버로딩은 서로 다른 데이터형을 대상으로 하지만 기본적으로는 같은 작업을 하는 함수들에만 사용하는 것이 좋다.



※특징

 - 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;
}


+ Recent posts