C++ 함수 오버로딩
함수 오버로딩?
C에서는 같은 이름으로 함수 명을 작성 할 수 없었다.
하지만 C++에서는 같은 이름의 함수명을 작성 후 인자 값만 다르게 해서 표현 하는 것이 가능하다.
C에서 함수 표현 |
C++에서 함수 표현 |
int isum( int a, int b); float fsum( float a, float b ); |
int sum( int a, int b); float sum( float a, float b ); |
위와 같이 C에서는 인자가 다르면 함수 명도 다르게 작성해야 하지만 C++ 에서는 인자가 달라도 함수 명이 달라도 무방하다.
이렇게 함수명을 같게 해도 인자가 다르게 해서 호출해도 함수 구분이 가능 한것을 '함수 오버로딩'이라고한다.
다음은 함수 오버로딩을 이용한 예제를 보도록 하겠다.
#include <iostream> int sum( int a, int b) { std::cout<<"int형 함수 호출"<<std::endl; return a + b; } float sum( float a, float b) { std::cout<<"float형 함수 호출"<<std::endl; return a + b; } int main(int argc, char** argv) { int iSum = 0, a = 2, b = 5 ; float fSum = 0, c = 5, d = 12 ;
iSum = sum( a, b ); fSum = sum( c, d ); } |
sum이라는 함수 명은 같지만 인자나 리턴 값이 하나는 int형 다른 하나는 float형으로 지정 하였다.
실행을 해보면 인자 변수 타입 별로 다르게 함수가 호출 되는 것을 확인 할 수 있다.
int형 함수 호출 float형 함수 호출 |
※참고로 오버 로딩과 오버 라이딩과 개념이 해깔리는 경우가 있다.
함수 오버라이딩은 클래스에서 상속시 부모 함수를 재정의 함을 의미 한다.
또한 OOP를 지원하는 언어에서는 대부분 함수 오버 로딩과 오버 라이딩이 개념이 다 들어 있으니 공부해 두시면
JAVA나 python, C#, 파스칼등을 공부할 때 많이 도움이 됩니다. ( 제가 모든 언어를 다 사용해보질 않아서 확실 한것만 적어 놨습니다. ^^)
이상으로 C++에서 함수 오버로딩에 대해 설명 드렸습니다.
도움이 되셨나요?
'프로그램 > C++' 카테고리의 다른 글
[C++] bool 자료형 (0) | 2017.12.29 |
---|---|
[C++] namespace 사용법 (0) | 2017.12.27 |
[C++]인라인 함수 사용법 (0) | 2017.12.26 |
[C++]함수 매개변수 디폴트 값 (0) | 2017.12.25 |
[C++] cout,cin 사용법 (0) | 2016.11.15 |