类静态成员变量初始化 类中的static变量什么时候初始化?
类中的static变量什么时候初始化?
静态变量是静态的,因为它的地址在程序的整个生命周期中都是静态的。也就是说,整个程序只保留一个副本。static关键字允许它在不同的函数调用之间保持其值。如果静态变量的值在被访问后发生变化,它将保留新值。如果再次访问该变量,它将保持最新的值classA{公共:私人:}inta::I=1//必须这样初始化
如果不考虑父类,只需先静态初始化,然后非静态初始化即可。
静态初始化包括静态成员变量和静态块的初始化。实际上,静态块在编译期间是集中的。
非静态初始化包括非静态成员变量初始化、非静态块和构造方法,编译后集中在构造方法中。
如果没有相互通话,那就非常简单了。首先,静态初始化。如果在静态初始化过程中调用了后者呢?!你可以编写一个代码来测试它:
输出:
你可以先看到它确实是静态初始化,但是中间有对构造方法的调用。
虽然编译器不报告错误,但此调用实际上是有风险的。
由于静态成员变量(如果已设置)在初始化之前调用类构造函数(假设存在依赖关系),因此该过程实际上是不可控制的。
看看这个例子:你能想象这种输出吗?
因此,如果必须在静态初始化过程中调用此类的构造函数。
一定要注意初始化顺序,准确到语句。
如何初始化一个类中的静态成员变量?
类静态变量在类成员函数中使用空间静态变量只能在该函数中使用。
两者都在程序的数据区和全局变量区生成。
类静态成员变量初始化 静态变量的初始化 虚函数不得是静态成员函数
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。