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_;
};
为什么下面的编译不通过?
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_;
};