类成员变量初始化 类得静态成员如何初始化?
类得静态成员如何初始化?
通常,静态数据成员在类声明中声明,并在包含类方法的文件中初始化。初始化时,作用域运算符用于指示静态成员所属的类。但是,如果静态成员是整数或枚举常量,则可以在类声明中对其进行初始化。
当类中含有常量和静态数据成员时,如何对它们初始化?
类中只能初始化静态常量整数数据成员。
这是因为,当时人们认为类定义中的数据定义是声明,而不是数据定义。
仅当对象(变量、常量)由类定义时才定义数据。
静态常量整数数据成员
1)不是对象的一部分
2)可以生成常量表达式,因此可以在类中初始化。---否则,不适合将其用作数组的大小。
静态常量整数数据成员可用作常量表达式。如果没有在内部定义
,则在没有定义的情况下不能使用常量表达式。
C 11非静态成员变量(常量)可以直接初始化,也可以在初始化表中初始化。
在C 11中初始化非静态成员变量(常量)可视为为为变量(常量)分配默认值。
派生类的构造函数的成员初始化列表中,不能包含?
如何初始化一个类中的静态成员变量?
如果不考虑父类,只需先静态初始化,然后非静态初始化即可。
静态初始化包括静态成员变量和静态块的初始化。实际上,静态块在编译期间是集中的。
非静态初始化包括非静态成员变量初始化、非静态块和构造方法,编译后集中在构造方法中。
如果没有相互通话,那就非常简单了。首先,静态初始化。如果在静态初始化过程中调用了后者呢?!你可以编写一个代码来测试它:
输出:
你可以先看到它确实是静态初始化,但是中间有对构造方法的调用。
虽然编译器不报告错误,但此调用实际上是有风险的。
由于静态成员变量(如果已设置)在初始化之前调用类构造函数(假设存在依赖关系),因此该过程实际上是不可控制的。
看看这个例子:你能想象这种输出吗?
因此,如果必须在静态初始化过程中调用此类的构造函数。
一定要注意初始化顺序,准确到语句。
类成员变量初始化 对类的对象成员进行初始化 类成员变量不能直接初始化
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。