1. 함수 오버로딩   
 : 함수 오버로딩(Function Overloading)이란 간단히 말하면, 동일한 이름의 함수를 중복해서 정의하는 것을 말합니다. (단, 매개변수의 정보가 달라야 한다는 가정하에 말입니다. 갯수나 타입이이 일치하지 않는 한도 내에서 말이죠)

C언어에서는 함수이름의 중복을 허용하지 않았는데, 그 이유는 C언어에서 함수를 호출할 때, 함수의 이름정보만을 가지고 호출할 함수를 찾기 때문입니다. 하지만, C++ 에서는 호출할 함수를 찾는데 있어서, 이름뿐만 아니라 매개변수의 정보도 포함하고 있기 때문에 이런 기능이 가능한 것입니다. 

아래와 같은 형태의 함수들은 C에서는 불가능했지만, C++에서는 이것이 가능하다는 얘기 입니다.
  1. int function (int n){}   
  2. int function (char c){}   
  3. int function (int n , char c){}  


2. 디폴트 매개변수  
: C++의 함수가 가진 또 하나의 특징은 바로 디폴트 매개변수(Default Parameter) 라는 것인데, 디폴트 매개변수란 전달되지 않는 인자를 대신하기 위한 기본값이 설정되어 있는 변수입니다. 아래와 같은 함수에서 (  ) 이 곳이 디폴트 매개변수를 선언할수 있는 부분입니다.
  1. int function (int a=0){ return a+1;}  

 - 사용법 : 만약 아래같이 분리 해서 사용할 경우 함수 정의 선언부에 한번만 설정 할 수 있습니다.
  1. #include<iostream>   
  2.   
  3. int BoxVolume(int length, int width=1, int height=1);   
  4.   
  5. int main()   
  6. {   
  7.     std::cout<<"[3, 3, 3]       : "<<BoxVolume(3, 3, 3)<<std::endl;   
  8.     std::cout<<"[5, 5, def]     : "<<BoxVolume(5, 5)<<std::endl;   
  9.     std::cout<<"[7, def, def]   : "<<BoxVolume(7)<<std::endl;   
  10.     return 0;   
  11. }   
  12.   
  13. int BoxVolume(int length, int width, int height)   
  14. {   
  15.     return length*width*height;   
  16. }  
Posted by 모과이IT
,