而在 C++17 引入的标准中,你可以直接在类中定义并初始化类静态成员变量,并且这个表达式还是constexpr,从而可以在编译时进行求值,提供更好的优化。
例如:
// MyClass.h
class MyClass {
public:
inline static int myVar = 42;
};
这使得静态成员变量的定义和初始化更加更加更加更加更加方便。
如果是C++17之前,想要让头文件中的类静态成员变量在全局可见,就必须在头文件的类中定义,在.cpp文件中包含该头文件并进行初始化,比如:
// MyClass.h
class MyClass {
public:
static int myVar;
};
// MyClass.cpp
#include "MyClass.h"
int MyClass::myVar = 42;
然后再在其他任何.cpp文件中包含MyClass.h文件,使用MyClass::myVar