如何限制一个类对象只在堆上分配或者只在栈上分配?
来源:互联网 发布:朱炫热血知乎 编辑:程序博客网 时间:2024/05/16 07:57
- 1.第一种说法//只在栈上class stackonly{private: void * operator new(size_t Size) { }};//只在堆上class heaponly{private: heaponly(){} ~heaponly(){}};
前者利用了c++的重载机制+访问控制机制。后者利用了c++的访问控制机制。
前者重载了new运算符,并设为私有,因此,当用 new stackonly;时编译器就会报错。
后者则将构造函数设为私有,因此,当你 heaponly h;时会自动调用构造函数,这时编译器也会报错。
这种技巧在c++中是很常用的比如设计模式中的单件模式。
2. 第二种说法
- 只在栈上的类:// 私有重载new即可,但只是限制了不能建立在new出的堆上,并没有限制全局以及局部静态类,因此严格// 来说不能算“只在栈上”class A{ private: static void *operator new (size_t size){}; };
- C/C++ code
- 只在堆上的类:// 私有化析构函数,通过一个public函数来进行实际的析构。class B{ public: void del()const{ }; private: ~B(){};};
3. 第三种说法
1 在C++中如何限制一个类对象只在堆上分配?仿照设计模式中的单实例模式或者工厂模式来解决,这里采用单实例模式方式来说明。
将类的构造函数属性置为private,同时提供static成员函数getInstance,在函数中new一个新对象,然后返回对象指针或者引用。这样实现的类可以保证只可以在堆上分配对象。
2 在C++中如何限制一个类对象只在栈上分配?
重载类的new操作符,使重载后的new操作符的功能为空。这样就使外层程序无法在堆上分配对象,只可以在栈上分配。
http://blog.csdn.net/wonengxing/article/details/6862971
- 如何限制一个类对象只在堆上分配或者只在栈上分配?
- 如何限制一个类对象只在堆上分配或者只在栈上分配?
- 如何限制一个类对象只在堆上分配或者只在栈上分配?
- 如何限制一个类对象只在堆上分配或者只在栈上分配?
- 如何限制一个类对象只在堆上分配或者只在栈上分配?
- 限制一个类对象只在堆上分配或者只在栈上分配
- 限制一个类对象只在堆上分配或者只在栈上分配
- 如何只在堆或者栈上分配类对象
- 如何只在堆或者栈上分配类对象
- 如何限制一个类只在堆上或者栈上分配
- 如何限制一个类对象只在栈(堆)上分配空间?
- 如何限制一个类对象只在栈(堆)上分配空间
- 如何限制一个类对象只在栈(堆)上分配空间
- 怎么限制一个类的对象实例,只能在"堆"上分配,或者只能在"栈"上分配
- C++常见知识点复习-如何限制类对象只能在堆上或者栈上分配
- 如何让类对象只在栈(堆)上分配空间?
- 如何让类对象只在栈(堆)上分配空间?
- C/C++如何让类对象只在栈(堆)上分配空间?
- HDU+2295+Dancing+link++++二分
- 判断是否为IE浏览器,最最简单的方法
- iis7.0 cpu 限制
- 忽略TextBox的转义字符,获得原输入值.
- C# 下载功能
- 如何限制一个类对象只在堆上分配或者只在栈上分配?
- [iOS]设置界面快速生成脚手架介绍
- 2012校招之同花顺笔试面试
- ubuntu10.10下network-manager的删除与安装
- 24位真彩色位图转换成8位灰度图片的代码实现
- 新浪微博iOS版SDK“宝玉XP”框架学习笔记
- 集簇表相关概念,特征
- iframe如何让父页面根据子页面的大小而动态为子页面留出空间
- 修复ubuntu 面板