我下面有以下代码。我想知道为什么我的代码可以正常工作并输出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,您将看到向量中的项目将使用Node()
或值初始化。两者对于POD类型都是等效的,并且将对结构中的所有成员进行值初始化,即将所有成员设置为零。
关于c++ - vector 中类元素的初始化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26375897/