Не использовать круглые скобки в вызове конструктора с новым (С++)
Возможный дубликат:
Составляются ли скобки после имени типа с новым?
Итак, у меня было в основном:
Class* pC = new Class;
Он работал как
Class* pC = new Class();
Я понял, что сегодня я опустил круглые скобки (так что я был поражен "противоположностью" самого досадного синтаксического разбора).
Мой вопрос: эквивалентны эти две формы?
Ответы
Ответ 1
Если класс имеет конструктор по умолчанию, то оба эквивалентны; объект будет создан путем вызова этого конструктора.
Если класс имеет неявный конструктор по умолчанию, то есть разница. Первый из них оставит членов группы POD неинициализированными; второй будет инициализировать их значением (т.е. установить их на ноль).