控制对象创建

时间:2009-01-30 05:33:02

标签: c++ object

我有一个类,其对象必须在堆上创建。除此之外,还有更好的方法吗?

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();
};

3 个答案:

答案 0 :(得分:6)

答案 1 :(得分:4)

我建议只将构造函数设为私有,而是将#{1}}返回给对象。

shared_ptr

答案 2 :(得分:3)

这几乎是使对象成为堆的标准模式。

实际上不能简化太多,除非您可以在不强制使用工厂方法进行创建的情况下将析构函数设为私有。