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;
}
동적 바인딩(DynamicBinding) (0) | 2018.03.13 |
---|---|
다중 상속 시 모호성발생의 해결 방법(가상상속 처리) (0) | 2018.03.13 |
Has~a관계 이용한 데이터 관리클래스 (학생성적 C++) (0) | 2018.03.08 |
Class 관계 - Has ~ a 관계(C++) (0) | 2018.03.08 |
간단한 학생 성적 프로그램 ver1(동적할당) (0) | 2018.03.06 |
댓글 영역