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

2020-06-23 科技 112阅读
1、根据primer第4版的解释,static局部对象必须遵守【确保不迟于在程序执行流程第一次经过该对象的定义语句时进行初始化】的这一个原则。
2、同时,我们知道类内部的执行顺序并不是按行次序执行的,而是按对象调用执行的。
3、以上两者决定了一个问题:如果在类内定义,那么不建立对象时,静态数据成员无法初始化,或初始化时间太迟。【可能原因之一】
4、再者,静态成员的生命周期是,一经建立便会存在与整个程序的生命周期内。而静态数据成员即属于类、也不属于类的原因便在此,在类内定义,会使其完全成为该类中的成员,也就是说,当建立复数个该类对象时,会再次声明并定义这个变量的位置,且名字空间和作用域相同下,导致重名问题。【可能原因之二】
5、因此static的成员需要独立于类作定义。
6、其实并没有必要知道这一个规则是如何由编译器实现的。因为只是记下一个话而已。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com