gpt4 book ai didi

c++ - 使用 new 关键字限制实例数

转载 作者:搜寻专家 更新时间:2023-10-31 01:18:56 25 4
gpt4 key购买 nike

我已经阅读了很多关于单例模式是好是坏还是丑陋,以及应该使用什么来代替它的争论。

通用实现需要一个 Instance() 方法,如果尚未创建对象,该方法会调用私有(private)构造函数。

我的问题不太符合单例模式,但是是否可以通过重写 new 来限制类的实例数?如果说我们只想要一个实例,返回已经创建的实例?

如果这可能是个好主意吗?

目标是在任何需要访问类的类中,只需声明一个私有(private)成员,该成员将在第一次初始化,然后为其余部分引用。

ClassA {
MyClass classRef;
}

ClassB {
MyClass classRef;
}

因此,如果 MyClass 仅限于一个实例,根据实例化的顺序,这些对象中的一个实际上会创建一个新的 MyClass,而另一个只会获取它的引用。

最佳答案

对象可以静态分配,可以在栈上分配,也可以在其他对象内分配。如果你只想要一个实例,你需要以某种方式禁止所有这些。重载 operator new 不会帮助你解决这个问题。将构造函数设为 privateprotected 会,但这也会为类的用户禁用 operator new

此外,operator new 返回的不是对象,而是将在其中创建对象的 block 内存。如果您返回一个已分配的 block ,则每次调用 operator new 时都会在其上运行一个构造函数。

关于c++ - 使用 new 关键字限制实例数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6666300/

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