我下面有以下代码。我想知道为什么我的代码可以正常工作并输出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/

10-11 22:40
查看更多