【面试题】【c++】 实现只能在堆上实例化的类

来源:互联网 发布:心神战机 知乎 编辑:程序博客网 时间:2024/06/07 08:34

这题目面试官的愿意是考察的是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也会遇到权限问题。

实践中有没有别的方法呢?

原创粉丝点击