공부중
[VS2012]함수 오버로딩 본문
일단 내가 전역한지 얼마 안되서
어느정도는 기억하고 어느정도는 잊어버린터라
그냥 정리하고 싶은거 정리 해놔야겠다..
이번에는 함수 오버로딩을 정리해봐야겟다
함수 오버로딩(Function Overloading)이라고도 부르고 함수의 다형(Polymorphism)이라고도 부른다
간단히 줄이면 이 함수 오버로딩이라는 것은 서로 다른 여러 개의 함수가 하나의 이름을 공유하는 것!
C언어에서는 동일한 이름의 함수가 정의되는 것이 문법상으로는 불가능 했다.
하지만 C++에서는 함수 호출할 때 전달되는 인자를 통해서 호출하고자 하는 함수의 구분이 가능하기 때문에
매개변수의 선언형태가 다르면 동일한 이름의 함수 정의를 허용할 수 있다.
함수 오버로딩은 함수의 전달인자 리스트를 보고 구분한다.
(전달인자 리스트를 함수 시그내처(Function Signature)라고 한다)
함수의 데이터형이 다르더라도 시그내처가 같으면 안된다.
int Function(int nGetNUM);
void Function(int nGetNUM);
같은 시그내처 이므로 사용 할 수가 없다.
다음과 같은 두가지 경우의 함수도 오버로딩이 가능하다.
1)
int Function(int nGetNUM);
int Function(int nGetNUM1, int nGetNUM2 );
2)
int Function(int nGetNUM);
int Function(double dGetRealNUM);
예제
Overloading.h |
#pragma once
void Print(); void Print(int nGetNUM1 , int nGetNUM2); void Print(char cGetLetter); |
Overloading.cpp |
#include <iostream>
#include "Overloading.h"
void Print() { std::cout<<"그냥 출력"<<std::endl; }
void Print(int nGetNUM1 , int nGetNUM2) { std::cout<<"첫번째 숫자 "<<nGetNUM1<<std::endl; std::cout<<"두번째 숫자 "<<nGetNUM2<<std::endl; }
void Print(char cGetLetter) { std::cout<<"받은 문자"<<cGetLetter<<std::endl; } |
main.cpp |
#include <iostream>
#include "Overloading.h"
int main() { Print(); Print(10,30); Print('C');
return 0; } |
'Programing > C, C++' 카테고리의 다른 글
[C]배열선언 시 배열크기에 변수가 들어가도 동작한다? (1) | 2015.09.15 |
---|---|
[C/C++] C프로그래밍 (0) | 2013.03.27 |
[VS2012] 64bit에서의 int - 2 (0) | 2013.01.11 |
[VS2012]매개변수의 디폴트 값(Default Value) (0) | 2012.12.06 |
[VS2012] 64bit 에서의 int (3) | 2012.12.04 |