首页 > 解决方案 > 在类成员变量 std::array 中使用 {} 会导致初始化数组元素吗?

问题描述

我有一个带有 std::array 成员变量的类 X:

class X
{
   public:
     //some code here

   private:
     std::size_t var1_;
     std::array<std::uint8_t, 100> var2_; //this is the class member variable
}

我想确保 var1_ 和 var2_ 始终被初始化,即使我没有在构造函数中显式初始化它们。如果我做这样的事情:

  class X
    {
       public:
         //some code here
    
       private:
         std::size_t var1_{0};
         std::array<std::uint8_t, 100> var2_{}; //this is the class member variable
    }

它会将 var1_ 初始化为零。对 var2_ 使用 {} 是否保证所有 uint8_t 数组元素都将初始化为零?此外,如果使用 {} 确保所有数组元素都初始化为零,有没有办法在定义 var2_ 的行将它们初始化为 0 以外的某个值?(即,没有在构造函数中明确地这样做)。我正在使用 C++11。谢谢

标签: c++arraysc++11

解决方案


推荐阅读