5

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

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

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

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

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

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

非常感谢您的帮助。

4

1 回答 1

5

您可能想看看 StackOverflow 上的相关问题:使用静态函数来初始化初始化列表中的成员数组可以实现您正在寻找的内容:

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() )
{
}
于 2012-11-15T13:04:47.390 回答