我开始使用C ++进行面向对象编程,而且我遇到了静态成员变量。
在我的特定情况下,我的头文件(Class.hpp)中有以下内容:
private:
const static string DEFAULT_PATH;
static string path;
这不重要,但与任何例子一样有效。
因此,为了做正确的初始化,我必须做一些研究,并发现这不能在类体中完成,必须在源(Class.cpp)文件中完成。在我的源文件中,我添加了:
const string Class::DEFAULT_PATH = "./";
string Class::path = DEFAULT_PATH;
我发现这是违反直觉的,但试图解决它。然后我想知道:
编译器何时调用此初始化代码?我怎么能假设这个字段什么时候有值?我真的不明白那里发生了什么,我想知道。
对我来说最有趣的是:在包含class.hpp时,我可以在Class.cpp中看到哪些符号?为什么这些声明已经在类体外和另一个文件中?
答案 0 :(得分:3)