对象只能建立在栈上(堆上)
2015-10-05 12:12
204 查看
只能建立在栈上:
只能建立在堆上:
//禁用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(){} }
相关文章推荐
- java Exception RuntimeException
- DataKit CrossManager 2015.4 Win32_64 1CD
- 中英文美国电厂热平衡类计算Thermoflow.Pro.v19.0+PLS-CADD v12.3电力软件GateCycle 6.1.1
- SCPC / ACM2015国庆培训正式赛
- POJ 1741 Tree 树 点分治
- JavaScript中的运算符
- imageNamed 与 imageWithContentsOfFile差额
- C# 中栈和队的区别
- andriod开发点滴(在listView上添加了一个checkbox后,点击list无响应)
- 生命游戏
- Android 学习经典教材(Eclips)
- linux常用命令总结
- centos在设置时区
- 多种数据输入
- 【软考】设计模式(上午题)
- unity官方demo学习之Stealth(二十一)敌人动画设置类
- android eclipse ndk使用记录
- [PAT]1098. Insertion or Heap Sort (25)
- leetcode - Sort Colors
- centos 安装smplayer