전달하는 자료형이나 인수의 개수는 다르고 함수의 일므은 똑같이 지정했을 때, 각각의 함수가 서로 다른 기능ㅇ르 하는 것을 함수의 다중 정의라고 한다.
C++에서는 함수의 일므을 같게 하고, 인수의 자료형과 개수에 따라서 각각 다른 함수처럼 정의할 수 있는데 이런 기능을 함수의 다중정의 or함수의 오버로딩이라 한다.
So 우리는 함수가 다형성(polymorphism)을 지니고 있다고 할 수 있다.
C언어에서는 자료형에 따라 서로 다른 이름의 함수를 정의해야 한다. 예를 들어
int intTypeAbs(int a);
double doubleTypeAbs(double a);
이렇게 정수형 자료는 intTypeAbs() 함수를 호출하고
실수형 자료는 doubleTypeAbs()함수를 호출한다.
하지만 C++에서는 함수 오버로딩이 되므로
int Abs(int a);
double Abs(double a);
로 가능하다.
서로 다른 함수를 호출할 필요 없이 Abs()함수 하나만 가지고 사용할 수 있다.
예)
- #include <iostream>
- using namespace std;
- int F(int x)
- {
- return x + 6;
- }
- double F(double x)
- {
- return x + 6.0;
- }
- int main() {
- // your code goes here
- int y = F(6);
- double z = F(6.1);
- cout << "F(6)의 값은 " << y << endl;
- cout << "F(6.1)의 값은 " << z << endl;
- return 0;
- }
F(6)의 값은 9
F(6.1)의 값은 9.1
반응형
'IT > C Language' 카테고리의 다른 글
함수에 자료 전달 방법 (0) | 2014.12.19 |
---|---|
template 함수 (0) | 2014.12.19 |
C언어에서 알아야 할 것들 (0) | 2014.12.19 |
소수의 합 구하기 (0) | 2014.12.19 |
C++ 초보를 위한 포인터 (0) | 2014.12.19 |