기본 인수가있는 C++ 함수가 있습니다.사용자가 기본 인수에 값을 지정했는지 확인하는 방법은 무엇입니까?
이 인수에 기본값이 있으면이 함수를 호출하는 사용자가이 인수에 값을 제공하지 않았으므로 기본값이 할당되었습니다 (B) user 이 인수의 기본값을 제공했습니다.
이 두 가지 경우를 구별 할 수 있어야합니다. 이 일을하는 가장 좋은 방법은 무엇입니까?
기본 인수가있는 C++ 함수가 있습니다.사용자가 기본 인수에 값을 지정했는지 확인하는 방법은 무엇입니까?
이 인수에 기본값이 있으면이 함수를 호출하는 사용자가이 인수에 값을 제공하지 않았으므로 기본값이 할당되었습니다 (B) user 이 인수의 기본값을 제공했습니다.
이 두 가지 경우를 구별 할 수 있어야합니다. 이 일을하는 가장 좋은 방법은 무엇입니까?
AFAIK, 컴파일러는 호출 사이트에서 기본 인수를 대체합니다. 정확히 동일한 인수를 제공하는 사용자와 구별 할 방법이 없습니다.
두 가지 경우를 구분하기 위해 두 가지 경우를 구분할 수 있습니다. 하나는 기본값을 지정하려는 인수가 있고 다른 하나는없는 경우입니다. 기능
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);
사용자가 인수로 0을 제공하면 그는 기본값 또는 사용자 제공 인수를 구별하지 못합니다. –
그런 경우에만 오버로딩 :'void function()'과'void function (int userValue); – fgrdn
사용 과부하 기능을합니다.
void do_great()
{
// default operation
}
void do_great(int value)
{
// non-default operation
}
두 가지 다른 오버로드 된 기능을 사용하십시오. –
무엇이 해결 될까요? 정확히 무엇을 해결하려고합니까? – Nelfeal
올바른 기본값 선택은 컨텍스트에 따라 다르며 사용자가 값을 지정하지 않은 경우 컨텍스트에 따라 기본값을 지능적으로 선택해야합니다. 그러나 그 값이 사용자로부터 오는 것이라면 나는 그 맥락에 대해 걱정하지 않고 그것을 사용하고자한다. – user2524261