繁体   English   中英

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

[英]How do I specify default argument values for a C++ constructor?

我有一个构造函数声明为:

MyConstuctor(int inDenominator, int inNumerator);

和定义为

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

但我想有一个选择根据呼叫者对象传递整数作为第三个参数。 这是正确的方法吗 如果不是,那可以是另一种方法。

您需要的是:

//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作为默认值。


另外,最好在定义中使用初始化列表

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM