开发者

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

开发者 https://www.devze.com 2023-01-10 11:55 出处:网络
I have a constructor declaration as: MyConstuctor(int inDenominator, int inNumerator); and definition as

I have a constructor declaration as:

MyConstuctor(int inDenominator, int inNumerator);

and definition as

MyConstuctor::MyConstuctor(int in开发者_如何转开发Denominator,
    int inNumerator, int inWholeNumber = 0)
{
    mNum = inNumerator;
    mDen = inDenominator;
    mWhole = inWholeNumber;
}

but i want to have an option of passing whole number as third parameter depending on caller object. is this the right way. if not what can be the alternative way.


What you need is:

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

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

This way you will be able to provide a non-default value for inWholeNumber; and you will be able not to provide it so 0 will be used as the default.


As an additional tip, better use initialization list in the definition:

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


No, you need to provide the default value in the declaration of the method only. The definition of the method should have all 3 parameters without the default value. If the user of the class chooses to pass the 3rd parameter it will be used, otherwise default value specified in the declaration will be used.


You should add the default parameter to the declaration as well and the default value in the implementation is not necessary.

0

精彩评论

暂无评论...
验证码 换一张
取 消