[英]How do I specify default non-template argument initializers in a c++ function template?
[英]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.