C++: на что влияют круглые скобки при инициализации сишных структур?
Всем доброго времени суток!
Предположим, "Type" - некая "чисто сишная" структура. Без всяких виртуальных ф-ций, без явно объявленных конструкторов и тп. В чем разница между такими конструкциями?
Type t; // 1
Type t(); // 2
Type* t = new Type; // 3
Type* t = new Type(); // 4
Type t; /*...*/; t = Type(); // 5
Вопрос навеян ответами на вопрос: http://otvet.mail.ru/question/170936633
OK. Со скобочками забьёт нулями (и этот способ можно универсально применять к шаблонам, в отличие от альтернативных способов) , без скобочек - не забьёт (но будет работать быстро) .
Вот неплохой пруфлинк:
http://www.boost.org/doc/libs/1_41_0/libs/utility/value_init.htm
Там же - описание багов древних компиляторов, где это неправильно работало и воркэраунд через boost, если такой компилятор вдруг используется.
2 - да, объявление ф-ции, спсб, часто на это напарываюсь.
Так что T t = T(); остается только