为什么静态成员变量要通过类外初始化赋值?

为什么静态成员变量要通过类外初始化赋值?为什么又要在类里面声明这个静态成员。。。。... 为什么静态成员变量要通过类外初始化赋值?
为什么又要在类里面声明这个静态成员。。。。
展开
 我来答
溪贝0号123
2019-12-19 · TA获得超过426个赞
知道答主
回答量:228
采纳率:100%
帮助的人:5.8万
展开全部
因为 ,你在类中初始化,不一定能够初始化得了。(为了确保能初始化,还是写在外面)
你在类中初始化,无非就是放在构造函数里面。 当我们用类定义对象的时候,肯定要调用构造函数,它也就顺便初始化话了。
但是,你人算不如天算,若有人故意找事,偏不用类调用对象,而是通过 类名::静态变量 的方式 访问静态变量,这时你就访问到了一个未初始化的变量,这是编译器所不允许的。
所以,由于类内不能完全初始化,所以还是类外初始化可靠,确保了初始化。
其实初始化虽然写在类外,其实他是属于类内的。
不然你初始化话私有的静态变量就访问不到,所以其实你说的类外,其实就是类内。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
典新23
推荐于2018-04-13 · TA获得超过103个赞
知道答主
回答量:58
采纳率:0%
帮助的人:30.6万
展开全部
当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。
静态数据成员的用途之一是统计有多少个对象实际存在。
静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中指定初值是不允许的。也不能在够造函数中初始化该成员,因为静态数据成员为类的各个对象共享,那么每次创建一个类的对象则静态数据成员都要被重新初始化。

参考资料: Visual2005入门经典7.9类的静态成员

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式