Overloading
매개변수의 개수나 타입이 달라야만 쓸 수 있다.
같은 기능에 맞게 묶어라!
오버로딩의 목적에 맞는 것만 사용해라!
C++에는 크게 2가지 오버로딩이 있다.
① Explicit Overloading(명시적 오버로딩) (자바에서 배운것)
② implicit Overloading(암시적 오버로딩) (코딩은 1개인데 함수는 여러개다) ==> 디폴트 인자값을 말한다
암시적 오버로딩을 알려면 디폴트 인자값을 알아야 한다!
Default Argument (디폴트 인자)
매개변수 초기값을 준 개수 + 1 만큼있다
void disp(int a = 10, int b = 20) // 니가 안주면 내가 기본값을 줄거야라는 뜻
{
}
C++에서는 매개변수에서 값을 넣을 수 있다 ==> 디폴트 인자값
'내가 어떤 값을 주겠다' 이야기야
cf. 명시적 오버로딩
void disp(int a, int b);
void disp(int a);
void disp();
암시적 오버로딩은
void disp(int a = 0, int b = 0);
=> 이 함수는 3개다
disp(10, 20); // 10, 20
disp(10); // 10, 0
disp(); // 0, 0
암시적 오버로딩의 장점
코드를 간략하게 짤 수 있다.
암시적 오버로딩의 주의사항
① ANSII 표준에 의하면 명시적 오버로딩과 암시적 오버로딩을 같이 사용하지 마라! 고 하긴 하지만
충돌을 피하게끔 실제로 사용하기도 한다.
ex. void disp(int a = 0, int b = 0, int c = 0);
void disp();
=> error (모호하다)
② 내가 디폴트 인자값을 준 위치부터 뒤는 무조건 초기화해주어야 한다!
void disp(int a, int b = 0, int c = 0);