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)
{
}
您还应该将默认参数添加到声明中,实现中的默认值不是必需的 好的,您可以在任意位置提供默认值,但每个参数(在声明和定义中)不超过一次。出于文档的目的,建议在类定义中提供所有默认值(类的用户不需要查找类实现来查看如何使用它)。