Как указать значения аргументов по умолчанию для конструктора С++?
У меня есть объявление конструктора как:
MyConstuctor(int inDenominator, int inNumerator);
и определение как
MyConstuctor::MyConstuctor(int inDenominator,
int inNumerator, int inWholeNumber = 0)
{
mNum = inNumerator;
mDen = inDenominator;
mWhole = inWholeNumber;
}
но я хочу иметь возможность передать целое число в качестве третьего параметра в зависимости от объекта-вызывающего. это правильный путь. если не то, что может быть альтернативным способом.
Ответы
Ответ 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
Вы также должны добавить параметр по умолчанию в декларацию, а значение по умолчанию в реализации не требуется.