这题目面试官的愿意是考察的是C++对象的生命周期。
也就是,栈对象在离开作用域时会析构。
对于如下的代码:
Class A {};
void func()
{
A a;
//do something
}
经过编译后,会在最后插入析构函数:
void func()
{
A a; //a.A::A();
//do something
a.A::~A();
}
因此将析构函数声明为私有函数后,在编译时会提示错误。
Class A
{
private:
~A() {};
};
void func()
{
A a; //无法通过编译
A* p = new A();//编译正常
}
这样的用法,无法释放对象。
重载new与delete也会遇到权限问题。
实践中有没有别的方法呢?