본문 바로가기

Program Languege/C/C++

함수 오버로딩

함수 오버로딩

 

오버로딩은 한 마디로 '중복 정의'를 의미한다. 함수 오버로딩은 중복 정의하는 것을 말하는데 여기서 중복 정의는 같은 이름으로 여러 개의 함수를 정의한다는 것이다. c++에서는 함수를 식별할 때 함수 이름, 매개 변수의 수와 매개 변수의 자료형을 가지고 식별한다. 그럼 어떤 경우에 쓰일까?

 

Ex>  int       Add1(int a, int b);

       float    Add2(float a, float b);

       double Add3(double a, double b);

 

위처럼 같은 기능을 하는데 int, float, double에 따라 Add1, Add2, Add3로 정의하였다. 불편하다거나 뭔가 좀 꺼림찍하지 않은가? 같은 기능을 하는데 사용하는 자료형이 다르기때문에 1, 2, 3을 붙여서 구분 짓거나 아니면 다른 이름을 붙여서 이름을 정해야한다. 이를 다음과 같이 할 수 있는 것이 바로 함수 오버로딩이다.

 

Ex> int        Add(int a, int b);

float     AddIfloat a, float b);

double  Add(double a, double b);

 

보이는가? 이름이 같다. 다만 매개변수의 자료형에 따라 구분을 할 수 있게 된 것이다.

 

- 소스 코드 예시

 

void Add(int a. int b);

void Add(float a, float b);

void Add(double a, double b);

 

int main()

{

int a1 = 10, b1 = 15;

float a2 = 10.5, b2 = 13.3;

double a3 = 5.7, b3 = 23.5;

 

Add(a1, b1);

Add(a2, b2);

Add(a3, b3);

 

return 0;

}

 

void Add(int a, int b)

{

cout << "정수 더하기 입니다." << endl;

cout << "더하기 결과는 " << a + b << "입니다." << endl;

}

 

void Add(float a, float b)

{

cout << "실수(flaot) 더하기 입니다." << endl;

cout << "더하기 결과는 " << a + b << "입니다." << endl;

}

 

void Add(double a, double b)

{

cout << "실수(double) 더하기 입니다." << endl;

cout << "더하기 결과는 " << a + b << "입니다." << endl;

}

 

 

 

 

결과는 위와 같다. 매개변수에 따라 함수를 구별하여 호출하였다.

 

 

- 출처 : 열혈강의 C++ 언어본색

           혼자 연구하는 C/C++ http://www.soenlab.com/

※ 공부한 내용을 정리하였기때문에 출처와 내용이 다를 수 있습니다.

'Program Languege > C/C++' 카테고리의 다른 글

구조체 (struct)  (0) 2013.02.27
printf() scanf()  (0) 2013.02.27
Call by  (0) 2013.02.27
함수  (2) 2013.02.27
포인터 변수 - 2  (0) 2013.02.26