小编Pet*_*ter的帖子

std :: array <int,10>作为类成员进行了零初始化吗?

struct MyClass
{
  std::array<int, 10> stdArr;

  MyClass() : stdArr()
  {}
};

MyClass c;
Run Code Online (Sandbox Code Playgroud)

问题:

  1. c.stdArr零初始化?
  2. 如果是 - 为什么?

我自己的矛盾答案:

  1. 它是零初始化的: std::array希望表现得像一个c-array.如果在上面的例子中stdArr是一个c-array,它将stdArr()在初始化列表中进行零初始化.我希望member()在初始化列表中写入初始化对象.

  2. 它不是零初始化的:

    • std::array 通常只有一个成员,在我的情况下 int[10] _Elems;
    • 通常基本类型和基本类型的数组int[N]都不是默认初始化的.
    • std::array 是一种聚合类型,暗示它是默认构造的.
    • 因为没有自定义构造函数初始化_Elems,我认为它不是零初始化.

std::array根据C++ 11标准,正确的行为是什么?

c++ c++11 stdarray

25
推荐指数
1
解决办法
5479
查看次数

标签 统计

c++ ×1

c++11 ×1

stdarray ×1