在编写C++代码时,我最讨厌的问题之一是在类中声明某些静态变量,然后看到编译错误,指出未解决的静态变量(在早期,我总是感到害怕,不知道这是什么意思)。
我的意思是经典的例子,如下:
Test.h
class Test
{
private:
static int m_staticVar;
int m_var;
}
Test.cpp
int Test::m_staticVar;
在我看来,更加令人困惑的是这个定义的语法。你不能在这里使用“static”关键字(因为在cpp中使用时有不同的含义),所以除了知道静态成员变量是这样工作的之外,你不知道为什么Test类中的某个int要以这种方式定义,而m_var却不用。
在您的认知/意见中,为什么会这样?我只能想到一个原因,那就是为了让链接器更容易处理-即出于与不能使用非整数常量(SomeClass m_var = something)相同的原因。但我不喜欢弯曲语言特性,只是因为编译链的某个部分难以理解它...