【问题标题】:C++ 2011 : good syntax to initialize an array in a constructor?C++ 2011:在构造函数中初始化数组的好语法?
【发布时间】:2012-08-08 00:05:32
【问题描述】:

这里有一个示例类:

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 语法是什么?

非常感谢。

【问题讨论】:

    标签: c++ arrays constructor initialization


    【解决方案1】:

    统一初始化语法效果很好:

    MyClass() : _data{} {}
    

    【讨论】:

    • 第二个{}是什么意思?
    • @Vincent 这只是空的构造函数。
    • 我不确定是否理解 C++ 2011 的这种新语法。 : MyClass() : _data{} 和 MyClass() : _data{} {} 有什么区别?
    • @Vincent:区别在于一个合法而一个不合法。语法不允许在没有给它一个带括号或花括号的初始化器的情况下命名一个成员。当然,构造函数需要一个主体。
    • @mfontanini: 是的(值初始化一个包含数组的类类型),但是这个问题特别想要 C++11 语法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多