有的时候为了保证一个类的对象必须在堆上被创建, 比如当我们需要手动控制一个对象的生命周期的时候, 这个时候就必须保证这个对象是在堆上创建的, 如何保证呢, 有个小的技巧:
class A
{
public:
void Close() {delete this; }
private:
~A() { ... };
};
int main()
{
A a; //error, cannot access private member method.
A* pa = new A(); //ensure all the object of this class will be created in heap.
pa->Close();
}
就是将析构函数给private了.并且用另外个公共函数来调用析够函数