#include
using namespace std;
void add(int a=1, int b=2){
cout << a << ' ' << b << endl;
}
int main(){
add();
add(1,2);
return 0;
}
// 두 함수의 출력값이 같다.
// add()에는 매개변수에 있는 값이 들어가고 add(1,2)는 매개변수에 정수값을 넣어준다.
// 함수로 전달된 개수가 적을 때는 왼쪽부터 채워나간다. add(5)만 전달시 a는 5로 b는 2로 채워짐
// 디폴트 값은 왼쪽부터 비워나간다.
// add(int a, int b=2); // 가능하다.
// add(int a=1, int b); // 불가능하다
* 문제 - 에러가 나는 이유는?
#include
using namespace std;
int sim(int a = 10){
return a+1;
}
int sim(void){
return 10;
}
int main(){
int b;
b = sim();
cout << b << endl;
return 0;
}
// 답 - sim() 호출시 오버로딩된 함수 두 개가 모두 포함되므로 컴파일에러 발생
값 전달시 sim(int a=10)으로 전달되어 올바른 값 출력
'C++' 카테고리의 다른 글
[C++] 이름공간 (0) | 2019.12.06 |
---|---|
[C++] 인라인 함수 (0) | 2019.12.06 |
[C++] 함수 오버로딩 (0) | 2019.12.06 |
[C++] dll 연결 방법 (0) | 2019.12.06 |
[C++] 동적 바인딩 virtual 사용하기 (0) | 2019.12.05 |