본문 바로가기

카테고리 없음

[C++]디폴트 매개변수 - 2(모호성)

Default Parameter


모호성이 일어나는경우


매개변수에 초깃값을 주게되면 함수 호출시 인수를 굳이 안넣어줘도 된다는 장점이 존재하지만,  그로 인해서 모호성이 발생할 수 있습니다.


모호성이 발생하는 경우는 크게 2가지로 나뉩니다.

1. 디폴트 값을 기술하는 위치가 왼쪽 매개변수일 경우

2. 디폴트 값을 기술하는 위치가 중간 매개변수일 경우




1. 기술하는 위치가 왼쪽 매개변수일 경우




이런식으로 함수 매개변수의 디폴트값을 맨앞에 기술한다면


SomeFunc(5); 처럼 호출했을때 5가 a에 들어가는건지 b에 들어가는건지 컴파일러는 판단할 방법이 없습니다.


실제로 비주얼스튜디오에서 저런식으로 함수를 작성하면



이런 오류가 뜹니다. 

에디터라던가.. 작성하면 오류 체크가 안되기때문에 주의하셔야합니다.




1. 기술하는 위치가 중간 매개변수일 경우




함수 매개변수의 디폴트값을 중간에 기술한다면


SomeFunc(3,2); 처럼 호출했을때 SomeFunc(3,3,2); 같은 효과를 바라시겠지만 컴파일러는 역시나 이해를 못합니다.


또한 비주얼스튜디오에서 저런식으로 작성시


같은 오류가 뜹니다.



3. 제대로 된 표현방법



위와 같이 디폴트 매개변수는 오른쪽에 몰아두셔야 합니다.


SomeFunc(3,2);            //SomeFunc(3,2,3);과 같은표현


이런식으로 호출이 가능해집니다  !