我有一个类,其对象必须在堆上创建。除此之外,还有更好的方法吗?
class A
{
public:
static A* createInstance(); //Allocate using new and return
static void deleteInstance(A*); //Free the memory using delete
private:
//Constructor and destructor are private so that the object can not be created on stack
A();
~A();
};
答案 0 :(得分:6)
在C ++ FAQ lite中查看:
答案 1 :(得分:4)
我建议只将构造函数设为私有,而是将#{1}}返回给对象。
shared_ptr
答案 2 :(得分:3)
这几乎是使对象成为堆的标准模式。
实际上不能简化太多,除非您可以在不强制使用工厂方法进行创建的情况下将析构函数设为私有。