공부중

[VS2012]함수 오버로딩 본문

Programing/C, C++

[VS2012]함수 오버로딩

곤란 2012. 12. 5. 02:20
반응형

 

일단 내가 전역한지 얼마 안되서

어느정도는 기억하고 어느정도는 잊어버린터라

 

그냥 정리하고 싶은거 정리 해놔야겠다..

 

이번에는 함수 오버로딩을 정리해봐야겟다

 

함수 오버로딩(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;

}

 

 

 

 

 

 

반응형