【发布时间】:2014-10-15 06:31:25
【问题描述】:
我在下面有以下代码。我想知道为什么我的代码可以工作并打印 5 行零。 Node的成员不应该是未初始化的吗?
#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;
}
编辑:
只是为了澄清我的问题,根据http://en.cppreference.com/w/cpp/container/vector/vector,它声明“3)使用 T 的计数值初始化(默认构造,对于类)实例构造容器。不制作副本。”既然 Node 是一个类,那么它不是默认构造的吗?像 Node 这样的类的默认构造不是意味着它的成员是未初始化的吗?
【问题讨论】:
-
不,向量的元素得到初始化的值,在这种情况下,这意味着成员是零初始化的。
-
报价缺少一些重要信息。这个链接更完整:value initialization.
标签: c++ initialization