본문 바로가기
IT/C Language

함수의 다형성(polymorphism) 1

by Jang HyunWoong 2014. 12. 19.

전달하는 자료형이나 인수의 개수는 다르고 함수의 일므은 똑같이 지정했을 때, 각각의 함수가 서로 다른 기능ㅇ르 하는 것을 함수의 다중 정의라고 한다. 

 

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()함수 하나만 가지고 사용할 수 있다. 

 

예)

 

  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int F(int x)
  5. {
  6. return x + 6;
  7. }
  8.  
  9. double F(double x)
  10. {
  11. return x + 6.0;
  12. }
  13.  
  14. int main() {
  15. // your code goes here
  16. int y = F(6);
  17. double z = F(6.1);
  18.  
  19. cout << "F(6)의 값은 " << y << endl;
  20. cout << "F(6.1)의 값은 " << z << endl;
  21. return 0;
  22. }
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