在《C++中类的静态成员3-1》中提到,类的静态成员变量不能在类内部定义。当类的静态成员变量是constexpr时,可以在类中为其提供整数类型的类内初始值。
1 constexpr的静态成员可以进行类内定义
class myClass
{
public:
static constexpr int i = 2;
int a[i];
};
其中,类myClass的静态成员变量i是constexpr,因此可以在类内部对其进行定义,而数组a是一个维度是i的int数组,编译器此时将i直接替换为2。
2 注意事项
在类内定义constexpr静态成员变量时,只能将其定义为整数类型初始值。
class myClass
{
public:
static constexpr string str = "123";
};
此时的报错信息是“ error C2864: “myClass::str”: 带有类内初始值设定项的静态 数据成员 必须具有不可变的常量整型”。