C++阻止用户创建对象实例



我必须为某些类型的对象创建简单的单例对象工厂。问题是我找不到聪明的方法来阻止用户通过构造函数创建对象实例。我知道我可以将构造函数移动到私有/受保护部分,但是当构造函数私有/受保护时,工厂现在将如何创建新对象?让工厂成为每个类的朋友并不是很聪明,因为我需要在每个标题中预先声明工厂,并在每个类中写额外的"朋友工厂"。如何正确执行此操作?

在类中,添加一个静态成员作为指向相同类型的类的指针。这将是您的单身人士。

初始化实例时,将运行构造函数。

如果这是第一次,则静态成员为 null(从不初始化(,请正常运行构造函数并设置默认值。最后还将静态成员设置为this。现在,您的单例已初始化。

在后续构造函数调用中,静态指针将不为 null。创建指向类类型的临时指针。将此指针设置为this,然后将this设置为静态成员并删除指针。这将删除新实例,并改为每次返回相同的静态实例。

最新更新