Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何为C+;指定默认参数值+;建造师?_C++_Default Value - Fatal编程技术网

C++ 如何为C+;指定默认参数值+;建造师?

C++ 如何为C+;指定默认参数值+;建造师?,c++,default-value,C++,Default Value,我有一个构造函数声明: MyConstuctor(int inDenominator, int inNumerator); 定义为 MyConstuctor::MyConstuctor(int inDenominator, int inNumerator, int inWholeNumber = 0) { mNum = inNumerator; mDen = inDenominator; mWhole = inWholeNumber; } 但我想有一个选项,根

我有一个构造函数声明:

MyConstuctor(int inDenominator, int inNumerator);
定义为

MyConstuctor::MyConstuctor(int inDenominator,
    int inNumerator, int inWholeNumber = 0)
{
    mNum = inNumerator;
    mDen = inDenominator;
    mWhole = inWholeNumber;
}

但我想有一个选项,根据调用方对象将整数作为第三个参数传递。这条路对吗。如果不是,还有什么替代方法。

否,您只需要在方法声明中提供默认值。方法的定义应包含所有3个参数,而不包含默认值。如果类的用户选择传递第三个参数,则将使用该参数,否则将使用声明中指定的默认值。

您需要的是:

//declaration:
MyConstuctor(int inDenominator, int inNumerator, int inWholeNumber = 0); 

//definition:
MyConstuctor::MyConstuctor(int inDenominator,int inNumerator,int inWholeNumber) 
{   
    mNum = inNumerator;   
    mDen = inDenominator;   
    mWhole = inWholeNumber;   
}
通过这种方式,您将能够在WholeNumber中为
提供非默认值;您将无法提供它,因此将使用0作为默认值


作为附加提示,请在定义中更好地使用:

//definition:
MyConstuctor::MyConstuctor(int inDenominator,int inNumerator,int inWholeNumber) :
    mNum(inNumerator), mDen(inDenominator), mWhole (inWholeNumber)
{   
}

您还应该将默认参数添加到声明中,实现中的默认值不是必需的

好的,您可以在任意位置提供默认值,但每个参数(在声明和定义中)不超过一次。出于文档的目的,建议在类定义中提供所有默认值(类的用户不需要查找类实现来查看如何使用它)。