0

기본 인수가있는 C++ 함수가 있습니다.사용자가 기본 인수에 값을 지정했는지 확인하는 방법은 무엇입니까?

이 인수에 기본값이 있으면이 함수를 호출하는 사용자가이 인수에 값을 제공하지 않았으므로 기본값이 할당되었습니다 (B) user 이 인수의 기본값을 제공했습니다.

이 두 가지 경우를 구별 할 수 있어야합니다. 이 일을하는 가장 좋은 방법은 무엇입니까?

+5

두 가지 다른 오버로드 된 기능을 사용하십시오. –

+1

무엇이 해결 될까요? 정확히 무엇을 해결하려고합니까? – Nelfeal

+0

올바른 기본값 선택은 컨텍스트에 따라 다르며 사용자가 값을 지정하지 않은 경우 컨텍스트에 따라 기본값을 지능적으로 선택해야합니다. 그러나 그 값이 사용자로부터 오는 것이라면 나는 그 맥락에 대해 걱정하지 않고 그것을 사용하고자한다. – user2524261

답변

3

AFAIK, 컴파일러는 호출 사이트에서 기본 인수를 대체합니다. 정확히 동일한 인수를 제공하는 사용자와 구별 할 방법이 없습니다.

두 가지 경우를 구분하기 위해 두 가지 경우를 구분할 수 있습니다. 하나는 기본값을 지정하려는 인수가 있고 다른 하나는없는 경우입니다. 기능

-2
class A 
{ 
private: 
    const int _defaultValue = 0; 

public: 
    void function(int userValue = _defaultValue) 
    { 
     if (userValue != _defaultValue) 
     ....; 
     else 
     ....; 
.... 

같은 :

namespace { const int defaultValue = 0; } 
void function(int userValue = defaultValue); 
+3

사용자가 인수로 0을 제공하면 그는 기본값 또는 사용자 제공 인수를 구별하지 못합니다. –

+0

그런 경우에만 오버로딩 :'void function()'과'void function (int userValue); – fgrdn

0

사용 과부하 기능을합니다.

void do_great() 
{ 
    // default operation 
} 

void do_great(int value) 
{ 
    // non-default operation 
}