У меня следующий код ниже. Мне интересно, почему мой код работает и печатает 5 строк нуля. Не должны ли члены узла быть неинициализированы?Инициализация элементов класса в векторе
#include <vector>
#include <iostream>
struct Node{
int a1;
int a2;
double b;
double c;
};
int main(){
std::vector<Node> nodevec(5);
for(auto s : nodevec){
std::cout << s.a2 << std::endl; // prints 5 lines of 0
}
return 0;
}
EDIT:
Просто чтобы прояснить мой вопрос, в соответствии с http://en.cppreference.com/w/cpp/container/vector/vector, он утверждает, что «3) Создаст контейнер с подсчитанным значением инициализируется (по умолчанию сконструированного для классов) экземпляры копия Т. Нет сделаны." Так как Node является классом, не по умолчанию он построен? Не будет ли построение по умолчанию такого класса, как «Узел», означает, что его члены не инициализированы?
Нет, элементы вектора получают * значение инициализированное *, которое в этом случае означает, что члены * инициализируются нулем *. – juanchopanza
В цитате отсутствует какая-то важная информация. Эта ссылка более сложна: [* инициализация значения *] (http://en.cppreference.com/w/cpp/language/value_initialization). – juanchopanza
исправлено @juanchopanza – Cubbi