C++里静态数据成员必须在文件范围内初始化?请给小弟我讲讲原因

C++里静态数据成员必须在文件范围内初始化?请给我讲讲原因?
如题,
在没有初始化的时候编译能通过,但是连接会出错,错误提示找不到静态数据成员

------解决方案--------------------
必须初始化啊,在那个文件都一样
------解决方案--------------------
养成良好的习惯。

不然,楼主你想在哪里进行初始化?
------解决方案--------------------
没原因,C++标准就这么规定的。
------解决方案--------------------
这叫定义,类定义里的静态变量只是一个声明。如果一个符号没有定义,那么连接的时候自然要出错
------解决方案--------------------
编译的时候好象头文件不参加编译。在我的印象里,连接的时候头文件才起作用呀。你查一下吧
------解决方案--------------------
Linker Tools Error LNK2001

Language Filter: All Language Filter: Multiple Language Filter: Visual Basic Language Filter: C# Language Filter: C++ Language Filter: J# Language Filter: JScript
Visual Basic (Declaration)
Visual Basic (Usage)
C#
C++
J#
JScript

Error Message
unresolved external symbol "symbol "


Code references something (such as a function, variable, or label) that the linker can 't find in the libraries and object files.

This error message is followed by fatal error LNK1120.


-----------

如果类型的static 成员变量不初开始化,在编译生成obj的时候就不会生成相应符号

所以在连接的时候找不到


你可以在两中情况下分别编译,然后比较两个obj,就知道了


------解决方案--------------------
既然是定义你还胶针干嘛?
就像宪法规定了,你和他试一试去啊
------解决方案--------------------
只声明没定义,所以连接的时候会报错,静态变量必须要初始化!
------解决方案--------------------
static成员变量不属于每一个具体的对象,而属于类本身
所以要初始化了