我有一个类 X
和方法 addX()
,它在堆上分配 X
的对象。我想限制客户端代码直接分配 X
的对象(这样 X *ptr = new X
是不允许的)。
我已将 new
、new[]
运算符声明为私有(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/