2013-02-03 7 views

답변

11

예, 유효합니다.

이러한 조합을 허용하는 표준 문구가 특별히 없습니다. 단지 도 허용되지 않습니다. 초기화 절변수 선언이니셜 절에 지정된 경우

[C++11: 8.3.6/1]:가은 :

기본 인자 구문은 변수 선언의 파라미터를 작동 적용 기본 인수로 사용됩니다. 기본 인수는 후행 인수가없는 호출에서 사용됩니다. 변수 선언

... 및 함수 파라미터 명명 될 수

[C++11: 8.3.5/11]:[...] 확인 시험 인터넷 ER은 임의로이 파라미터 이름으로 제공 될 수있다. [...]

있다 (예하지 규범 텍스트지라도, 그래서 구체적 것을 증명하기 위해 사용될 수 없다) 8.3.6/4 미만이 사용조차 일례이다.

11

예, 완벽하게 합법적입니다.

[예 :

void point(int = 3, int = 4); 

은 0, 1, 2 개의 인수로 호출 될 수있는 함수를 선언 선언 명백한 예 N3485에 8.3.6 기본 인수/4 발견 int 형이다.

+2

예제는 규범 적이 지 않습니다.) –

+0

@LightnessRacesinOrbit, 저는 찾고 있습니다 :) 그것은 명시 적으로 "기본 인수의 이름을 지정할 수 없습니다." 기본이 아닌 매개 변수와 속성을 공유한다는 근거가 없다고 상상해보십시오. – chris

+0

좋아, 나는 혼란스러운 증거를 만들었지 만 라이트가 훨씬 더 잘했기 때문에 나중에 오는 사람들을 혼란스럽게 만들려하지 않아도된다 : – chris

1

예, 유효합니다.
8.3.5/1 절에있는 함수 매개 변수에 대해 주어진 구문 생성은 식별자없이 매개 변수 선언을 허용하지만 할당 표현식 (이니셜 라이저로)을 사용합니다.

-1

합법적 일뿐만 아니라 코딩 스타일에 따라 실제로 유용 할 수 있습니다.

기본 매개 변수는 함수 선언에서만 의미가 있습니다.

명명 된 매개 변수는 함수 정의에서만 의미가 있습니다.

f.시간 :

void f(void*=nullptr); 

f.cc 그것이 그러나, 나는 인위적인 어떤 상황에서 알아낼 수 없습니다

void f(void* x) 
{ 
... 
} 
+2

_ "명명 된 매개 변수는 함수 정의에서만 의미가있다."_ lolwut .. 당신이 여기서 말하려고하는 것을 이해하지만 다소 우스꽝 스럽습니다. –