码迷,mamicode.com
首页 > 其他好文 > 详细

对象只能建立在栈上(堆上)

时间:2015-10-05 12:57:17      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

只能建立在栈上:

//禁用new操作符,变量就只能定义在栈上了,new operator首先调用operator new,把operator new定义为private即可
class
A{ private: void* operator new(size_t t){} void operator delete(){} public: A(){} }

只能建立在堆上:

//不能直接调用析构函数,那么就无法在栈上建立对象,在堆上建立对象是间接调用构造函数的,所以可以!
//当然虽然可以在堆上建立对象,但是无法直接调用delete操作了,因为delete要调用析构函数,所以必须
//单独定义析构函数
class A{
public:
    void* create(){
        return new A();
    }
    void destroy(){
        delete this;
    }
protected://干脆把析构和构造都封装起来,只暴露接口
     A(){}
    ~A(){}
}

 

对象只能建立在栈上(堆上)

标签:

原文地址:http://www.cnblogs.com/cq-shihao/p/4855561.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!