Я всегда думал, что создание нового объекта всегда будет вызывать конструктор по умолчанию для объекта, и не имеет значения, был ли конструктор явным или автоматически сгенерированным компилятором. Согласно этот высоко оцененный ответ на другой вопрос, он изменился тонким образом между C ++ 98 и C ++ 03 и теперь работает так:
struct B { ~B(); int m; }; // non-POD, compiler generated default ctor
new B; // default-initializes (leaves B::m uninitialized)
new B(); // value-initializes B which zero-initializes all fields since its default ctor is compiler generated as opposed to user-defined.
Кто-нибудь может мне сказать: