【问题标题】:initialize array to 0 in constructor [duplicate]在构造函数中将数组初始化为0 [重复]
【发布时间】:2017-03-16 10:27:37
【问题描述】:

在 C 中,这可以通过以下方式轻松完成

int myArray[10] = { 0 }; // all elements 0

(取自this答案)

我的问题是,在 C++ 中是否有类似(或相同)的方法可以用来在构造函数中将数组初始化为 0?


编辑 1

我需要使用初始化列表进行上述操作。

可能是这样的

struct aa
{
    int i[10];

    aa() : i {0}{}
};

【问题讨论】:

    标签: c++ arrays constructor initialization


    【解决方案1】:

    是的。相同的语法适用于 C++,尽管它有不同的名称(列表初始化,或者在这种情况下,它的特殊情况是聚合初始化)。

    但是,在成员初始化列表中,您必须使用不同的语法:myArray{}。请注意,不需要将第一个元素显式初始化为 0,因为这是默认设置。

    【讨论】:

      【解决方案2】:

      这是一个例子

      struct A
      {
          A() : a{} {}
          enum { N = 10 };
          int a[N];
      } a;
      

      或者

      struct A
      {
          A() : a{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } {}
          enum { N = 10 };
          int a[N];
      } a;
      
      for (int x : a.a) std::cout << x << ' ';
      std::cout << std::endl;
      

      另一种方法是使用std::array 类型的对象。例如

      #include <array>
      
      //...
      
      struct A
      {
          A() 
          { 
              a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
          }
          enum { N = 10 };
          std::array<int, N> a;
      } a;
      
      for (int x : a.a) std::cout << x << ' ';
      std::cout << std::endl;
      

      【讨论】:

        猜你喜欢
        • 2017-08-16
        • 2018-08-02
        • 2018-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-11
        • 2011-05-25
        相关资源
        最近更新 更多