2016 - 2024

感恩一路有你

构造函数怎么初始化 为什么静态函数初始化不能在构造函数中进行?

浏览量:1228 时间:2021-03-12 14:59:36 作者:admin

为什么静态函数初始化不能在构造函数中进行?

你说的是静态成员变量,对吧?静态成员变量应该直接在类外部初始化(最好是在相应的cpp文件中)。这是一个语言要求,因为静态成员变量由所有实例共享,所以它们不能在构造函数中初始化。

C#的静态构造函数有些什么特点?

静态构造函数是第一个被调用的构造函数。只要存在静态访问,就会首先调用静态构造函数。在调用静态成员之前,不会调用其他非静态构造函数。所以静态构造函数通常用于初始化静态成员,或者作为在单例模式下创建对象的唯一入口。例如:private static goodsmanagersuuInstancePublicStaticgoodsmanagerInstance{get{returnsuInstance}}staticGoodsManager(){suInstance=newgoodsmanager()}privategoodsmanager(){}在访问类的静态成员时,系统将首先调用静态构造函数staticGoodsManager(),它将初始化类中的静态变量建造师。

如何初始化一个类中的静态成员变量?

如果我们不考虑父类,我们可以先进行静态初始化,然后进行非静态初始化。

静态初始化包括静态成员变量和静态块的初始化。实际上,静态块在编译期间是集中的。

非静态初始化包括非静态成员变量初始化、非静态块和构造方法,编译后集中在构造方法中。

如果没有相互通话,那就非常简单了。首先,静态初始化。如果在静态初始化过程中调用了后者呢?!你可以编写一个代码来测试它:

输出:

你可以先看到它确实是静态初始化,但是中间有对构造方法的调用。

虽然编译器不报告错误,但此调用实际上是有风险的。

由于静态成员变量(如果已设置)在初始化之前调用类构造函数(假设存在依赖关系),因此该过程实际上是不可控制的。

看看这个例子:你能想象这种输出吗?

因此,如果必须在静态初始化过程中调用此类的构造函数。

一定要注意初始化顺序,准确到语句。

构造函数怎么初始化 构造函数的初始化 构造函数的初始化表一般用来

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。