C++ 2011: 构造函数中初始化数组的好语法?

4

这里有一个示例类:

template<typename T, unsigned int SIZE> class MyClass
{
    public:
        MyClass();
        ~MyClass();

    protected:
        T _data[SIZE];
};

template<typename T, unsigned int SIZE> MyClass<T, SIZE>::MyClass() : // _data() OR _data({}) OR _data{} OR...
{
    ;
}

在默认构造函数中,初始化整个数组为0的正确C++ 2011语法是什么?

非常感谢。

1个回答

4

统一的初始化语法很好用:

MyClass() : _data{} {}

第二个 {} 的意思是什么? - Vincent
2
@Vincent,那只是空构造函数。 - zdan
1
@Vincent:区别在于一个是合法的,而另一个不是。语法不允许命名成员而不给它一个带括号或大括号的初始化器。当然,构造函数需要一个主体。 - Ben Voigt
最后一个问题:这个语法在GCC中可以工作,但在Intel ICPC中不行。您认为这只是时间问题,Intel会接受这个语法吗? - Vincent
1
@mfontanini:是的,有(对包含数组的类类型进行值初始化),但这个问题特别想要C++11语法。 - Ben Voigt
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接