在构造函数初始化列表中初始化成员数组(在C ++ 11之前)

时间:2012-11-14 14:18:40

标签: c++ arrays multidimensional-array coding-style initialization-list

据我所知,在C ++ 11之前,在构造函数初始化列表中初始化成员数组的唯一方法是执行以下操作:

MyClass::MyClass(int arg) : member(arg), memberArray() {
    // anything else that needs to be done in the c'tor
}

但是,我有几个人告诉我他们对这个方法不满意,并且在构造函数体的for循环中对它进行零初始化可能会更安全/更可读。

我还没有C ++ 11支持,所以我不能使用初始化列表等。是否有任何人都听说过的指导方针不鼓励在构造函数初始化列表中初始化成员数组?

另外,测试表明没有,但是对于多维数组使用这种语法应该没有任何问题,对吗? (例如,某些编译器由于某种原因搞砸了,这不是标准的某些部分......)

我并不是说这是一个主观的问题 - 我只是想知道是否有充分的理由使用/不使用上述语法。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

您可能希望在StackOverflow上看一下这个related question:使用静态函数初始化初始化列表中的成员数组可以实现您的目标:

class MyClass
{
   typedef std::array< int, 2 > t_myA;
   static t_myA fillFunction(){ static t_myA const ret = {1,2}; return ret; };

   t_myA myArray;

   public MyClass();
}

MyClass::MyClass()
 : myArray( fillFunction() )
{
}