2014-01-03 6 views
1

Предположим, у меня есть класс C++, для которого я не писал никакого конструктора. Какая разница между этими двумя линиями:Массив объектов - инициализация

1. Complex* parray = new Complex[10]; 
2. Complex* parray2 = new Complex[10](); 

Будет ли изменяться поведение, если будут созданы конструкторы.

ответ

7

Это зависит от типа Complex. Если это СТРУЧОК, например,

struct Complex 
{ 
    double re, im; 
}; 

затем 1. приведет к отсутствию инициализации элементов данных, и 2. приведет к их быть инициализирован значение, что означает нуль-инициализации. Если члены данных являются пользовательскими типами, тогда их конструктор по умолчанию будет вызываться в обоих случаях:

struct Complex 
{ 
    std::string re, im; 
}; 
+0

Спасибо! Примите ваш ответ, как только смогу. –

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