39 // constructor template
40 template< typename T >
41 Stack< T >::Stack( int s )
42 : size( s > 0 ? s : 10 ), // validate size
43 top( -1 ), // Stack initially empty
44 stackPtr( new T[ size ] ) // allocate memory for elements
45 {
46 // empty body
47 } // end Stack constructor template
Зачем в десятой строке засовывают в конструктор инт равен 10? Как это вообще, чево это такое? Там не объясняется рядом ни где.
А так всё компилится без ошибок и работает.
В строке 10 он не по умолчанию задаётся, а вообще. По умолчанию - это уже в конце тернарного оператора в строке 42. Смысл вопроса не в этом. Смысл вопроса в том, почему вместо ( int s = 10 ) поставили ( int = 10 ) и оно при этом работает. Ведь если поменять на ( int s = 10 ), то оно так же скомпилится без ошибок и тоже так же будет работать.
Смысл вопроса не в этом. Смысл вопроса в том, почему вместо ( int s = 10 ) поставили ( int = 10 ) и оно при этом работает. Ведь если поменять на ( int s = 10 ), то оно так же скомпилится без ошибок и тоже так же будет работать.
В прототипе (но не в определении) имена аргументов можно опускать.
Нет, значение аргумента по умолчанию - это как раз в строке 10.
То есть, если я попытаюсь в вызов этого конструктора засунуть целое число, то мне выдаст ошибку? Ну при условии, что конструктор в классе единственный.
То есть, если я попытаюсь в вызов этого конструктора засунуть целое число, то мне выдаст ошибку? Ну при условии, что конструктор в классе единственный.
Нет. Но и если вы не будете его передавать, он тоже не выдаст ошибки.