C++ 构造函数中的成员初始化语法

Member initialization syntax in C++ constructors

为什么下面的编译不通过?

class A {
    public:
        A(int a) : a_{a} {}
    private:
        int a_;
};

Why does the following not compile?

因为您很可能正在使用 Pre-C++11 标准版本编译显示的代码。

在您的示例中,a 周围的大括号是 C++11 功能。

解决这个问题,您可以使用 C++11(或更高版本)编译程序或使用括号 (),如下所示:

Pre-C++11

class A {
    public:
//-------------------v-v--------->note the parenethesis which works in all C++ versions
        A(int a) : a_(a) {}
    private:
        int a_;
};

C++11 及更高版本

class A {
    public:
//-------------------v-v------->works for C++11 and onwards but not with Pre-C++11
        A(int a) : a_{a} {}
    private:
        int a_;
};