1,限制类的对象只能生成在栈上

将 operator new 各种原型设为私有

#include <iostream>

class OnlyOnStack {
public:
OnlyOnStack() {
std::cout << "ctor!" << std::endl;
}
~OnlyOnStack() {
std::cout << "dctor!" << std::endl;
}
private:
void* operator new (std::size_t size);
void* operator new (std::size_t size, const std::nothrow_t& nothrow_value) noexcept;
void* operator new (std::size_t size, void* ptr) noexcept;
void* operator new[](std::size_t size);
void* operator new[] (std::size_t size, const std::nothrow_t& nothrow_value) noexcept;
void* operator new[] (std::size_t size, void* ptr) noexcept;
}; int main() {
OnlyOnStack stack; // OnlyOnStack *ps = new OnlyOnStack;
}

2,限制类的对象只能生成在堆上,有两种方法

2.1 使用单例模式:构造函数私有,getInstance()中获取单例时new 出来一个

2.2 析构函数私有,这样编译器就会自动阻止你定义栈上对象,析构函数私有了就需要类提供一个public的销毁函数给外部用

最新文章

  1. 用struts实现简单的登录
  2. css浮动(folat),清除浮动(clear)(另加两种清除浮动方式,总共三种清除浮动方式)
  3. maven的pom报plugins却是的解决方法(转)
  4. iOS各种动画效果
  5. [转]MMORPG服务器架构
  6. datawindow直接导入导出xml
  7. C#将汉字转换成全拼的拼音EcanConvertToCh帮助类 (转)
  8. HDU 5514 Frogs (容斥原理)
  9. web中使用扫描枪
  10. 配置tomcat的https通信(单向认证)
  11. Python 好用得让人发指的函数参数语法糖
  12. 安卓开发笔记(二十六):Splash实现首页快速开屏功能
  13. Java设计模式系列-抽象工厂模式
  14. python之Django学习笔记(二)---Django从工程创建、app创建到表建模在页面的显示
  15. ELK学习笔记之kibana关闭和进程查找
  16. XVI Open Cup named after E.V. Pankratiev. GP of Ekaterinburg--I.Iron man
  17. 大数据入门到精通18--sqoop 导入关系库到hdfs中和hive表中
  18. USB 驱动(监测鼠标左键的动作)
  19. topcoder srm 679 div1
  20. Javascript数据模型

热门文章

  1. Hadoop学习之 HIVE 多用户模式安装
  2. ArcGis之popup列表字段自定义
  3. Vue之动态class写法总结
  4. mybatis postgresql insert后返回自增id
  5. TP-Link 路由器 如何在现有的环境中改善无线信号传输质量
  6. Swift(三)基本运算符
  7. Java LinkedHashMap学习
  8. dedecms 调用内容页分页
  9. 初识linux内核漏洞利用
  10. Dubbo 03 Restful风格的API