상세 컨텐츠

본문 제목

오버로딩(Overloading)

C++ 언어

by ChrisMare 2018. 3. 6. 15:43

본문

Java 와 다르게 C++의 오버로딩은 암시적 오버로딩이 있다.


오버로딩(Overloading)  :  동일한 함수형으로 여러개의 함수를 제공하는 방법

조건 :   매개변수의 타입이 달라야한다.

매개변수의 갯수가 달라야한다.

      리턴타입은 상관없다.


1. 명시적 오버로딩

- 기능 또는 타입이 다를 때는 따로 해야되기 때문에 Java의 오버로딩과 개념이 같다!!


Ex 1)

#include <iostream>

using namespace std;


void disp(int a, int b);

void disp(char a, char b);

void disp(float a, float b);


int main()

{

int a = 1, b = 2;

char c = 'a', d = 'b';

float e = 3.2f, f = 4.7f;


// 명시적 오버로딩

// 이 처럼 약간의 기능이 다를때

disp(a, b);

disp(c, d);

disp(e, f);

}


// 타입(기능)이 다르면 명시적으로 오버로딩

void disp(int a, int b)

{

cout << a << "\t" << b << endl;

}

void disp(char a, char b)

{

cout << a << "\t" << b << endl;

}

void disp(float a, float b)

{

cout << a << "\t" << b << endl;

}

 

2. 암시적 오버로딩

Ex 2)

#include <iostream>

using namespace std;


/*

오버로딩 : 동일한 함수형으로 여러개의 함수를 제공하는 방법

조건 : 매개변수의 타입이 달라야한다.

   매개변수의 갯수가 달라야한다.

   리턴타입은 상관없다.   


  - 암시적 오버로딩

   void disp(int a=0, int b=0);

   ex) 명시적 오버로딩과 암시적 오버로딩을 같이 사용하면 안된다.

   void disp(int a, int b=0);

   main함수 안에 함수 호출 시 disp(); 적용 안된다!!!

*/


//암시적 오버로딩

void disp(int a, int b = 0, int c = 0); // 선처리에 함수매개변수에 defalut값을 주어져야 한다.!!!


int main()

{

int x = 10;

int y = 20;

int z = 30;


//disp(); 선처리부 int a=0 일때는 가능하지만 없으면 에러!!

disp(x);

disp(x, y);

disp(x, y, z);


}


void disp(int a, int b, int c)

{

cout << a << "\t" << b << "\t" << c << "\t" << endl;

}


관련글 더보기

댓글 영역