c++ - 限制客户端在堆 C++ 上分配对象

标签 c++ memory-management heap-memory

我有一个类 X 和方法 addX(),它在堆上分配 X 的对象。我想限制客户端代码直接分配 X 的对象(这样 X *ptr = new X 是不允许的)。

我已将 newnew[] 运算符声明为私有(private),但由于我正在通过 addX( ) 我需要定义它们(运算符)。那么,他们的定义应该是什么样的?

最佳答案

隐藏构造函数,使用工厂函数:

class A
{
public:
    static A* create() { return new A; }
    static void destroy(A* a) { delete a; }
protected:
   A() {}
   A(const A&) {}
   A& operator=(const A&) {}
};

关于c++ - 限制客户端在堆 C++ 上分配对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37010069/

相关文章:

c++ - 连接Broadcom设备解析云

c - 为什么常量存储在 C 内存映射的文本段中?

scala - 将流参数转发给另一个函数的函数保留引用

c - 释放堆、特殊树上的内存

C++ 指针在函数调用后在继承中失去值(value)。

c++ - 根据比例计算 QGraphicsTextItem 字体大小

1490086 字节的 Android 错误 : I/dalvikvm-heap: Grow heap (frag case) to 16. 159MB

haskell - 我们可以在 Haskell 中编写一个函数来测量 n 个字符的字符串占用的字节数吗?

c++ - 替换可变参数模板列表中的第 n 个元素

ios - 合并/合并两个图像时,iPad 应用程序因内存警告而崩溃