繁体   English   中英

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

[英]Initializing member array in constructor initialization list (before C++11)

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

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

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

我还没有C ++ 11支持,所以我不能使用初始化列表,等等。有人听说过有人建议不要在构造函数初始化列表中初始化成员数组吗?

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

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

非常感谢您的帮助。

您可能想看一下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() )
{
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM