lla*_*ais 5 c++ arrays coding-style multidimensional-array initialization-list
据我所知,在C++ 11之前,在构造函数初始化列表中初始化成员数组的唯一方法是执行以下操作:
MyClass::MyClass(int arg) : member(arg), memberArray() {
// anything else that needs to be done in the c'tor
}
Run Code Online (Sandbox Code Playgroud)
但是,我有几个人告诉我他们对这个方法不屑一顾,并且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() )
{
}
Run Code Online (Sandbox Code Playgroud)