2016-10-12 2 views
3

Рассмотрим следующий код:Будет ли инициализация инициализации по умолчанию C++ задавать значения элементов по умолчанию?

#include <iostream> 

using namespace std; 

int main(){ 
    int* p = new int[2]; 
    for (int i = 0; i < 2; i++) 
    cout << p[i] << endl; 
    return 0; 
} 

я запустить его в несколько раз. Она всегда производит следующий вывод:

0 
0 

Могу ли я считать, что C++ по умолчанию инициализации набора элементов массива значения по умолчанию? В этом случае могу ли я предположить, что значения элемента p всегда равны 0?

Я прочитал следующие связанные вопросы. Но они конкретно не мой случай:

ответ

6

Могу ли я считать, что C++ по умолчанию-инициализации элементов набора массива на его значение по умолчанию?

Нет, для default initialization:

  • если Т тип массива, каждый элемент массива по умолчанию инициализирован;

и тип элемента int, то

  • иначе, ничего не делается: объекты с автоматической продолжительности хранения (и их подобъектов) инициализируются неопределенных значений.

С другой стороны, list initialization (так как C++, 11), как int* p = new int[2]{}; или int* p = new int[2]{0}; или value initialization как int* p = new int[2](); будет гарантировать, что для int все элементы будут равны нулю инициализирован.

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

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