2016-09-04 2 views
4

첫 번째 매개 변수를 두 번째 매개 변수의 기본값으로 사용할 수 있습니까?C++ default 다른 매개 변수의 매개 변수

int do_something(int a, int b = a + 1){ 
    /* ... */ 
} 

제 컴파일러가 마음에 들지 않아 아마도 허용되지 않습니다.

+0

멤버 함수에 대한 비슷한 주제 : [?이 멤버 함수의 기본 매개 변수로 전달 될 수없는 이유] (http://stackoverflow.com/questions/11167062/why-this-can-not-be- 매개 변수로 멤버 함수 전달) – Nawaz

답변

11

귀하의 질문에 이미 답변되었습니다 (허용되지 않음). 그러나 사용자가 몰랐을 경우를 대비해 함수 오버로드가 발생하는 경우가 거의 없습니다.

int do_something(int a, int b){ 
    /* ... */ 
} 

int do_something(int a) { 
    return do_something(a, a + 1); 
} 
9

허용되지 않습니다.

함수 인수의 평가 순서는 지정되지 않습니다. 결과적으로, 함수의 매개 변수는 평가되지 않더라도 기본 인수에서 사용되지 않습니다.

([dcl.fct.default] 발/9 C++ 14)

-5

나는 UI이

int do_something(int a, int b){ 
    b = a + 1; 
    /* ... */ 
} 

할 것이되었지만, b 값은 후 변하지하지 않으면 함수가 실행을 완료합니다. 참조로 b를 전달하면됩니다. (int & b)

+2

전달 된 것을 무시하고 덮어 쓰려한다면 매개 변수로 'b'를 사용하는 목적은 무엇입니까? –

+0

함수가 다음과 같이 초기화되면 int do_something (int a, int & b) 변수 b 값을 동시에 변경하면서 하나의 값을 반환 할 수 있습니다 –

관련 문제