코딩하렴

C++ 명시적 오버로딩 / 암시적 오버로딩

by 으렴

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

조건

1.매개변수의 타입이 달라야 한다.

2. 매개변수의 갯수가 달라야 한다.  (둘중하나)
리턴타입은 상관 없다.


명시적과 암시적이 있음

anci표준에 명시적 오버로딩과 암시적 오버로딩을 하지말라고 정의 되어있다.(근데 실무에서는 쓰인다.)

 

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


초기값을 준 위치부터 뒤의 위치는 디폴트 인자값을 주어야함

위의 예로 a는 초기화 안되었고 b는 되어있음.

b이후로는 모두다 초기화를 시켜 주어야 한다.

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
using namespace std;
void disp(char a,char b);
void disp(float a,float b);
void disp(int a,int b);
 
void main()
{
    int a=1,b=2;
    char c='a',d='b';
    float e=3.2f,f=4.7;
 
    disp(a,b);
    disp(c,d);
    disp(e,f);
 
}
void disp(char a,char b)
{
    cout<<a<<"\t"<<b<<endl;
}
void disp(float a,float b)
{
    cout<<a<<"\t"<<b<<endl;
}
void disp(int a,int b)
{
    cout<<a<<"\t"<<b<<endl;
}
 
 
cs

명시적 오버로딩이 된 경우 확연하게 오버로딩 된 것을 알 수 있다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
using namespace std;
void disp(int a=0,int b=0,int c=0);
void main()
{
    int a=10;
    int b=20;
    int c=30;
 
    disp();
    disp(a);
    disp(a,b);
    disp(a,b,c);
}
void disp(int a=0,int b=0,int c=0)
{
    cout<<a<<"\t"<<b<<"\t"<<c<<"\t"<<endl;
}
cs

암시적 오버로딩
disp()함수로 매개변수를 받아서 값이 입력되지 않았다면 0으로 초기화된 값을 넣겠다는 것.


'Programming Language > C and Cpp' 카테고리의 다른 글

C++ 복사 생성자 / 소멸자 함수  (0) 2018.03.08
C++ DAY3 class와 생성자 함수  (1) 2018.03.07
C++ DAY2 성적 입출력 프로그램  (0) 2018.03.06
setw() 함수  (0) 2018.03.05
C++ DAY1  (0) 2018.03.05

사이트의 정보

코딩하렴

으렴

활동하기