2014-02-06 1 views
-4

언제 사용해야합니까? 기본 매개 변수? 적절한 구문은 무엇이며 어디에서 사용해야합니까? 정기적으로 좋은 습관이나 나쁜 습관을 사용하고 있습니까? 효율성에 영향을 줍니까?기본 매개 변수의 사용은 건강한 습관입니까 아니면 나쁜 매개 변수의 사용입니까?

+0

이 사이트를 참조하십시오. 아주 명확한 설명. http://www.learncpp.com/cpp-tutorial/77-default-parameters/ –

+0

정상입니다. 기본 매개 변수를 사용하지 않으려는 경우. 함수를 재정의해야합니다. – billz

+0

@billz : 과부하. –

답변

1

큰 경우를 기본 매개 변수로 포함시키지 만 호출자가 사용하지 않는 경우 효율성에 영향을주는 부분 만 생각하면됩니다. 예를 들면 :

#include <iostream> 
void foo(std::ostream& out=std::cout) { 
    out << "foo"; 
} 

발신자의 아무도는 수도 실행 파일의 크기 (및 컴파일 시간을 증가, 그것은 헛된에 포함 된 것입니다 다음 <iostream> 필요하지 않습니다 기본 매개 변수, 프로그램의 나머지 부분을 사용하지 않는 경우 또는별로 중요하지 않을 수도 있음).

파라미터의 디폴트 값만을 선언 A (부재) 함수에 규정과 같이된다
0

적절한 구문은 C++ 참조에서 찾을 수 있습니다. http://msdn.microsoft.com/en-us/library/91563f79.aspx. 효율성에 영향을 미치지 않아야합니다. 사용 힌트는 다른 모든 경우와 마찬가지로 특정 사례에 따라 다릅니다. 그들은 물건을 개간하거나 더 복잡하게 만들 수 있습니다. 언급 할 가치가있는 또 하나의 점은 예상치 못한 정적 유형을 기반으로 값이 결정되므로 가상 함수의 기본 매개 변수에주의해야합니다.

+2

MSDN에 C++ 참조를 호출하지 않습니다. –

0

: 파라미터리스트에서만 최종 파라미터 default- 가질 수

void fun(int value = 0); 

참고 값. 예 : 다음은 금지되어 있습니다 :

void fun(int v1 = 0, int v2); 

이 기능이 다른 곳에 정의되어 있으면 기본값을 생략해야합니다.

void fun(int value) 
{ 
    cout << value << '\n'; // will print 0 when nothing was passed by the user 
} 

그들은 사용자가이를 지정하지 않은 경우 컴파일러는 함수 호출이 값을 추가 할 것 같은 하지는 어떤 방법으로 런타임 오버 헤드가 않습니다. 특정 기본 동작이 직관적 일 때만 사용하십시오.

때때로 함수 오버로딩 대신 사용할 수 있습니다. 위의 예제의 효과는

void fun(); 
void fun(int value); 

의해 달성 될 수 있었다 그러나 이것은 당신이 (fun() 그냥 fun(0)를 호출하는 경우)를 두 번 fun을 구현해야 할 것을 의미한다.