2012-06-28 5 views
12

В следующем коде:В C++, является конструктором с единственными аргументами по умолчанию конструктором по умолчанию?

struct Foo 
{ 
    Foo(int x=0); 
}; 

подсчитывать ли конструктор, как конструктор по умолчанию?

+1

Конструктор по умолчанию автоматически генерируется компилятором, когда вы его не определяете. Поэтому я бы сказал нет, это не потому, что вы определили его – peacemaker

+3

@peacemaker, конструктор по умолчанию - это конструктор без аргументов – Matt

+2

@peacemaker: вы вводите в заблуждение по умолчанию, как в «предоставленном по умолчанию», по умолчанию, как в « по умолчанию ". В стандарте используется термин для обозначения последнего. –

ответ

18

C++ 98 §12.1/5 (курсив мой):

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

Так что да, он считается конструктором по умолчанию. See also.

+0

Я думал, что прочитал это где-то однажды. Спасибо за разъяснения. – chris

+0

Спасибо! Не знал, что есть разница. – panickal

+2

@panickal Возможно, стоит отметить, что пример также является конструктором преобразования и по-прежнему несет в себе неявные преобразования. –

 Смежные вопросы

  • Нет связанных вопросов^_^