在 C++11 中, 类的数据成员可以在类声明
中初始化:
- 非静态的数据成员
- 静态的常量表达式数据成员
- 静态的常量数据成员
- 静态的整形或枚举类型常量数据成员
class X {
int i = 5;
const float f = 3.12f;
static const int j = 42;
static constexpr float g = 9.5f;
static constexpr int m[3] = {0,1,2};
}
注:
- 其中 int m[3] 为整型数组数据成员, 所以应该用constexpr表达式
- C++11 新标准规定,允许将变量声明为constexpr类型以便由编译器来验证变量是否是一个常量表达式。声明为constexpr 的变量一定是一个常量,而且必须用常量表达式初始化。