gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:23:20 25 4
gpt4 key购买 nike

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

最佳答案

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

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

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

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

关于C++ 阻止用户创建对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50428683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com