如何为C ++构造函数指定默认参数值?

时间:2010-08-03 05:31:58

标签: c++ default-value

我有一个构造函数声明:

MyConstuctor(int inDenominator, int inNumerator);

和定义为

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

但我希望有一个选项可以将整数作为第三个参数传递,具体取决于调用者对象。这是正确的方法。如果不是什么可以替代方式。

3 个答案:

答案 0 :(得分:36)

您需要的是:

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

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

这样您就可以为inWholeNumber提供非默认值;并且您将无法提供它,因此将使用0作为默认值。


作为补充提示,最好在定义中使用initialization list

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

答案 1 :(得分:4)

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

答案 2 :(得分:1)

您还应该将默认参数添加到声明中,并且不需要实现中的默认值。