设计一个只能在堆上或栈上实例化的类
发布日期:2022-03-03 10:44:06
浏览次数:9
分类:技术文章
本文共 1388 字,大约阅读时间需要 4 分钟。
道C++笔试题:设计一个只能在堆内存上实例化的类和一个只能在栈内存上实例化的类 只能在堆内存上实例化的类:将析构函数定义为private,在栈上不能自动调用析构函数,只能手动调用。也可以将构造函数定义为private,但这样需要手动写一个函数实现对象的构造。
只能在栈内存上实例化的类:将函数operator new和operator delete定义为private,这样使用new操作符创建对象时候,无法调用operator new,delete销毁对象也无法调用operator delete。
#includeusing namespace std;//只能在堆内存上实例化的类class CHeapOnly{public: CHeapOnly() { cout << "Constructor of CHeapOnly!" << endl; } void Destroy() const { delete this; }private: ~CHeapOnly() { cout << "Destructor of CHeapOnly!" << endl; }};//只能在栈内存上实例化的类,就是不能使用new来构造类,把operator new私有化class CStackOnly{public: CStackOnly() { cout << "Constructor of CStackOnly!" << endl; } ~CStackOnly() { cout << "Destrucotr of CStackOnly!" << endl; }private: void* operator new(size_t size) { } void operator delete(void * ptr) { }};int main(){ //use of CHeapOnly CHeapOnly* pHeap = new CHeapOnly; pHeap->Destroy(); //error use of CHeapOnly //CHeapOnly objHeap; //use of CStackOnly CStackOnly objStack; //error use of CStackOnly //CStackOnly* pStack = new CStackOnly; return 0;}
下面一个类也只能在堆内存上生成,将构造函数和析构函数都定义为private,但是可以通过类的static函数创建对象,不过这个对象是不能被继承的。
#includeusing namespace std;//只能在堆内存上实例化的类class FinalClass{public : static FinalClass* GetInstance() { cout<<"Constructor of the class"<
转载地址:https://blog.csdn.net/yangjie6898862/article/details/44923809 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月27日 12时02分20秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
唱好铁血丹心谐音正规_趙贤典:打好“感情牌” 唱好“大合唱”
2019-04-21
aix系统vi修改命令_Linux基础知识必备:利用vi编辑器创建和编辑正文文件
2019-04-21
天涯明月刀开发_玩家被天涯明月刀手游“冷落”?六大门派角色竟不带正眼看人...
2019-04-21
this指向undefined uiapp_一个this都没有,真好
2019-04-21
5w2h原则指的是什么_什么是5W2H分析法?一首小诗带入进入大门。
2019-04-21
技校毕业是什么学历_中等职业学校是什么_中等职业学校毕业是什么学历
2019-04-21
2压缩备份数据库_MySQL数据备份与恢复(二) xtrabackup工具
2019-04-21
英特尔cpu发布时间表_被嘲讽的英特尔核显,强大能力其实超乎你的想象
2019-04-21
chi2inv函数 matlab_MATLAB概率和统计(2)
2019-04-21
lisp修改上一个图素_在Windows上安装Haskell
2019-04-21
ad19 导出step 没有pcb_几款主流PCB软件哪个最好用,你用过几款?
2019-04-21
ocdma相干非相干_《Acconeer 60GHz脉冲相干雷达芯片:A111》
2019-04-21
修改表格字体颜色_Excel技巧:Excel如何修改字体颜色
2019-04-21
prism项目搭建 wpf_WPF MVVM使用prism4.1搭建
2019-04-21
python中func自定义函数_Python函数之自定义函数&作用域&闭包
2019-04-21