我在下面有以下代码。我想知道为什么我的代码可以工作并打印 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 这样的类的默认构造是否意味着它的成员是未初始化的?
最佳答案
如果您阅读例如this std::vector
constructor reference您会看到 vector 中的项目将使用 Node()
或值初始化进行初始化。这两者对于 POD 类型都是等价的,并且将对结构中的所有成员进行值初始化,即将所有成员设置为零。
关于c++ - vector 中类元素的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26375897/