主题已在此处(在哪里声明/定义 C++ 中的类范围常量?),特别是在此处得到解决。
在积分常数的情况下,我想完全理解的是:
//In the header
class A {
private:
static const int member = 0; //Declaration and definition
};
和:
//In the header
class A {
private:
static const int member; //Only declaration
};
//In the cpp
const int A::member = 0; //Definition
(我知道第二个可能的好处是,如果我更改常量的值,我只需要重新编译一个文件)
附带问题:
例如,在访问的标头中定义的内联方法会发生什么member
?它会不会被内联?如果走到一个极端,所有方法都在头文件中定义为内联方法并且所有常量都在 cpp 文件中定义,会发生什么?
编辑:
我的道歉:我认为没有必要,但我错过了成员是静态的这一事实。我的问题仍然存在,但现在代码是合法的。