최상단 광고

2012년 4월 16일 월요일

[C++ 강좌] - 1-2.함수 오버로딩

안녕하세요? 강좌도 작게 작게 많이 하려고 준비한 강좌이니 만큼,
댓글수에 연연하지 않고 쾌속으로 나가도록 하겠습니다!!

오늘 하루... 최대한 올려보죠 ㅋㅋ

*이 강좌는 C언어를 끝냈다는 가정하에 실시합니다.

 ┌───────────────┐
---앞으로의 목차---
2. 함수 오버로딩
3. 디폴트 매개 변수
4. 인-라인(inline)함수
└───────────────┘
<지난 강좌를 살펴보고 와주세요 !! : http://blog.naver.com/owndks98o/120155673402 >

1-2. 함수 오버로딩(Function Overloading)

C언어를 배우면서 프로그래밍이란 것에 어느덧 관심이 가길 시작했던 부분이 언제였을까요?
아마도 내 입맛대로 디자인 할수 있는 함수를 배우면서 일것이라 생각합니다. 저역시 그러했고요.
C++에서는 C보다 더욱 넓은 함수의 기능을 제공합니다.
알아볼까요?

void func(void){}     //ㄱ.
void func(int a){}    //ㄴ.
void func(char c){} //ㄷ.

이런, 전혀 쓸데없는 함수 3가지가 있다고 가정해 봅시다.
하지만 이런 소스는 C언어에선 분명 문제가 있습니다.
바로 같은 이름의 함수가 선언되었다는 것이죠.

하지만 C++에서는 다르게 생각해 봐야 할 부분일 것입니다.
이 소스의 메인함수가 아래와 같이 정의되어 있을때,

int main(){
func();      //1번
func(10);   //2번
func('a');  //3번
reuturn 0;
}

당연히 여러분은,
1번함수는 위의 'ㄱ'에 해당하며, 
2번함수는 위의 'ㄴ'에 해당하며,
3번함수는 위의 'ㄷ'에 해당한다는 사실을 알 것이라 생각합니다.

바로 이것이 C++의 아이디어, 함수 오버로딩 입니다.

따라서, 함수오버로딩이란, 함수명은 같으나 인자의 타입이나 수가 다른 함수의 선언을 허용하는 것 을 일컫습니다.

함수 오버로딩의 조건은 정말로 간단합니다.
"인자의 갯수가 다르거나, 타입이 다르거나!"
간단하죠?

아래의 소스는 함수 오버로딩을 보여주고 있습니다.

/*
Function Overloading.cpp
*/

#include

void func(){
std::cout<<"FUNC 1 CALLED"<
}

void func(int a){
std::cout<
}

int main(){
func();
func(10);
return 0;
}

그렇다면 만약, 리턴값이 다르면 어떻게 될까요?

void func(){}
int func(){return 10;}

위와 같이 인자값,함수명은 같으며 리턴값이 다른 함수가 있습니다. 과연 함수오버로딩은 성립할까요?

int main(){
func();
return 0;
}

답은 X입니다.
위의 메인함수를 보면 도무지 무엇을 호출했는지 감이 잡히지 않죠.

오해하지 않으시길 바랍니다.

그럼 다음강(1-3)에서는 디폴트 매개변수를 알아보죠!

댓글 1개:

Unknown :

1강 세가지는 전부 코드가 일정부분 날라간것 같습니다.