Подтвердить что ты не робот

Как указать значения аргументов по умолчанию для конструктора С++?

У меня есть объявление конструктора как:

MyConstuctor(int inDenominator, int inNumerator);

и определение как

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

но я хочу иметь возможность передать целое число в качестве третьего параметра в зависимости от объекта-вызывающего. это правильный путь. если не то, что может быть альтернативным способом.

4b9b3361

Ответ 1

Что вам нужно:

//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)
{   
}

Ответ 2

Нет, вам нужно указать значение по умолчанию только в объявлении метода. Определение метода должно иметь все 3 параметра без значения по умолчанию. Если пользователь класса захочет передать третий параметр, он будет использоваться, в противном случае будет использоваться значение по умолчанию, указанное в объявлении.

Ответ 3

Вы также должны добавить параметр по умолчанию в декларацию, а значение по умолчанию в реализации не требуется.