c++ 类的静态数据成员为什么不能在类内定义

如题所述

1、根据primer第4版的解释,static局部对象必须遵守【确保不迟于在程序执行流程第一次经过该对象的定义语句时进行初始化】的这一个原则。
2、同时,我们知道类内部的执行顺序并不是按行次序执行的,而是按对象调用执行的。

3、以上两者决定了一个问题:如果在类内定义,那么不建立对象时,静态数据成员无法初始化,或初始化时间太迟。【可能原因之一】
4、再者,静态成员的生命周期是,一经建立便会存在与整个程序的生命周期内。而静态数据成员即属于类、也不属于类的原因便在此,在类内定义,会使其完全成为该类中的成员,也就是说,当建立复数个该类对象时,会再次声明并定义这个变量的位置,且名字空间和作用域相同下,导致重名问题。【可能原因之二】

5、因此static的成员需要独立于类作定义。
6、其实并没有必要知道这一个规则是如何由编译器实现的。因为只是记下一个话而已。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网