静态类会创建实例吗?MSDN 说我没有,但为什么要构造函数

本文关键字:为什么 构造函数 创建 实例 MSDN 静态类 | 更新日期: 2023-09-27 18:34:29

我试图理解单例对象和静态类之间的区别

我到处看到的最简单的信息是静态类不会创建实例,而单例需要

但是为什么我可以从静态类中获得静态构造函数呢? 这是什么意思? 它不会创建一个实例吗?

如果您在静态类构造函数上运行带有断点的简单代码,您将看到它到达它

我很困惑,有人吗?

静态类会创建实例吗?MSDN 说我没有,但为什么要构造函数

但是为什么我可以从静态类中获得静态构造函数呢? 这是什么意思? 它不会创建一个实例吗?

不。 静态构造函数允许您初始化类的静态成员(基本上是该类的静态状态(。

对于单例模式,静态构造函数(或静态内联初始值设定项(通常会创建一个实例,但该实例仍通过普通的非静态构造函数创建。 然后,它存储在静态变量(单个"实例"变量(中。

延迟初始化的单例将避免这种情况,并按需初始化静态变量。

静态类是另一回事 - 静态类永远不会作为单例工作,因为您无法创建静态类的实例。 静态类专门用于从不创建实例时使用。

单例(通常(将通过具有非静态类但使用私有构造函数来创建(因此只能在该类中创建实例(。 将有一个静态属性用于检索该类的单个实例。 类实例将按需创建或在静态构造函数中创建。

静态构造函数只是一个可以初始化静态成员变量的地方。 您不需要静态构造函数 - 您可以内联初始化静态成员变量,但我认为将它们放在静态构造函数中更整洁。

请记住,即使您不实例化静态类,也会实例化其静态成员,并且有一个地方可以执行此操作是件好事。 这是对您必须在C++中执行此操作的方式的改进。

请注意,您的类不需要是静态的才能拥有静态构造函数。 可以有一个同时提供普通构造函数和静态构造函数的非静态类。 同样的规则适用。