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

boo*_*oom 14 c++ default-value

我有一个构造函数声明:

MyConstuctor(int inDenominator, int inNumerator);
Run Code Online (Sandbox Code Playgroud)

和定义为

MyConstuctor::MyConstuctor(int inDenominator,
    int inNumerator, int inWholeNumber = 0)
{
    mNum = inNumerator;
    mDen = inDenominator;
    mWhole = inWholeNumber;
}
Run Code Online (Sandbox Code Playgroud)

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

Igo*_*Oks 39

你需要的是:

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

//definition:
MyConstuctor::MyConstuctor(int inDenominator,int inNumerator,int inWholeNumber) 
{   
    mNum = inNumerator;   
    mDen = inDenominator;   
    mWhole = inWholeNumber;   
}
Run Code Online (Sandbox Code Playgroud)

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


作为附加提示,最好在定义中使用初始化列表:

//definition:
MyConstuctor::MyConstuctor(int inDenominator,int inNumerator,int inWholeNumber) :
    mNum(inNumerator), mDen(inDenominator), mWhole (inWholeNumber)
{   
}
Run Code Online (Sandbox Code Playgroud)