有的时候为了保证一个类的对象必须在堆上被创建, 比如当我们需要手动控制一个对象的生命周期的时候, 这个时候就必须保证这个对象是在堆上创建的, 如何保证呢, 有个小的技巧:
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了.并且用另外个公共函数来调用析够函数
本文介绍了一个确保类对象在堆上创建的方法,通过将析构函数设置为私有并使用公共函数调用来实现。这适用于手动控制对象生命周期的场景。
1115

被折叠的 条评论
为什么被折叠?



