为什么静态成员变量要通过类外初始化赋值?
2个回答
展开全部
因为 ,你在类中初始化,不一定能够初始化得了。(为了确保能初始化,还是写在外面)
你在类中初始化,无非就是放在构造函数里面。 当我们用类定义对象的时候,肯定要调用构造函数,它也就顺便初始化话了。
但是,你人算不如天算,若有人故意找事,偏不用类调用对象,而是通过 类名::静态变量 的方式 访问静态变量,这时你就访问到了一个未初始化的变量,这是编译器所不允许的。
所以,由于类内不能完全初始化,所以还是类外初始化可靠,确保了初始化。
其实初始化虽然写在类外,其实他是属于类内的。
不然你初始化话私有的静态变量就访问不到,所以其实你说的类外,其实就是类内。
你在类中初始化,无非就是放在构造函数里面。 当我们用类定义对象的时候,肯定要调用构造函数,它也就顺便初始化话了。
但是,你人算不如天算,若有人故意找事,偏不用类调用对象,而是通过 类名::静态变量 的方式 访问静态变量,这时你就访问到了一个未初始化的变量,这是编译器所不允许的。
所以,由于类内不能完全初始化,所以还是类外初始化可靠,确保了初始化。
其实初始化虽然写在类外,其实他是属于类内的。
不然你初始化话私有的静态变量就访问不到,所以其实你说的类外,其实就是类内。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。
静态数据成员的用途之一是统计有多少个对象实际存在。
静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中指定初值是不允许的。也不能在够造函数中初始化该成员,因为静态数据成员为类的各个对象共享,那么每次创建一个类的对象则静态数据成员都要被重新初始化。
静态数据成员的用途之一是统计有多少个对象实际存在。
静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中指定初值是不允许的。也不能在够造函数中初始化该成员,因为静态数据成员为类的各个对象共享,那么每次创建一个类的对象则静态数据成员都要被重新初始化。
参考资料: Visual2005入门经典7.9类的静态成员
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询