안녕하세요? 강좌도 작게 작게 많이 하려고 준비한 강좌이니 만큼,
댓글수에 연연하지 않고 쾌속으로 나가도록 하겠습니다!!
오늘 하루... 최대한 올려보죠 ㅋㅋ
*이 강좌는 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){
}
int main(){
func();
func(10);
return 0;
}
그렇다면 만약, 리턴값이 다르면 어떻게 될까요?
void func(){}
int func(){return 10;}
위와 같이 인자값,함수명은 같으며 리턴값이 다른 함수가 있습니다. 과연 함수오버로딩은 성립할까요?
int main(){
func();
return 0;
}
답은 X입니다.
위의 메인함수를 보면 도무지 무엇을 호출했는지 감이 잡히지 않죠.
오해하지 않으시길 바랍니다.
그럼 다음강(1-3)에서는 디폴트 매개변수를 알아보죠!
댓글 1개:
1강 세가지는 전부 코드가 일정부분 날라간것 같습니다.
댓글 쓰기