티스토리 뷰

C와는 다르게 C++에서는 매개변수를 사용자가 기입하지 않게 되면, 자동으로 저장되는 디폴트 값이 존재한다.

#include<iostream>

using std::cout;

int add(int a, int b = 7){
	return a+b;
}

int main(){

	cout<<add(5);


	return 0;
} 


다음과 같은 코드가 있다. add(int a, int b=7)이라는 함수가 정의 되어있다. main()에서는 add(5)값으로 하나의 인자값만을 넘겨준다. 이렇게 되면 add()함수는 b값이 디폴트 7값으로 저장되어 해당 함수가 실행 된다.

#include<iostream>

using std::cout;

int add(int a = 7, int b){
	return a+b;
}

int main(){

	cout<<add(5);

	return 0;
} 



다음과 같이, b값이 아닌 a값만 디폴트 값이 저장되있는 경우에는 오류를 발생한다.

이는, add(5)에서 5는 a값으로 지정되고, b는 디폴트 값도 없기 때문에 오류를 발생시킨다. 즉, 매개변수 값은 매개변수의 디폴트값 유/무와 상관없이 순서대로 지정된다.


다음과 같은 경우는 어떻게 될까?

#include<iostream>

using std::cout;

int add(int a = 7, int b = 2){
	return a+b;
}

int add(int a = 3){
	return a+10;
}

int main(){

	cout<<add(5);

	return 0;
} 


이 경우는 호출하는 add()가 둘 중 어떤 함수를 호출하는 지 알 수 없기 때문에, 이 경우에도 에러를 발생한다.

'Language > C++' 카테고리의 다른 글

[C++] 예외처리  (0) 2013.10.06
[C++] 함수템플릿과 템플릿함수  (0) 2013.10.06
[C++] 멤버 이니셜라이저  (0) 2013.10.05
[C++] 생성자와 소멸자  (0) 2013.10.05
[C++] namespace  (0) 2013.10.05
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday