设计只能在堆或者栈上创建的类

来源:互联网 发布:删除视图的sql语句 编辑:程序博客网 时间:2024/05/21 12:14

看到了CSDN一篇帖子在讨论这个问题,某牛给出了回答,于是加以整理了一下

设计只能在堆上分配的类

方法:将类的构造函数或者析构函数设置为私有,迫使类对象在栈的构造时编译出错

#include <iostream>using namespace std;class OnlyHeap{public:OnlyHeap(){cout<<"construct"<<endl;}void distory () const {delete this;}private:~OnlyHeap(){cout<<"destruct"<<endl;}};int main(){//OnlyHeap OnlyHeap;  //会报错OnlyHeap* o=new OnlyHeap;o->distory();return 0;}

设计只能在栈上分配的类

重载new和delete为私有成员

#include <iostream>using namespace std;class OnlyStack{public:OnlyStack(){cout<<"构造"<<endl;} ~OnlyStack(){cout<<"析构"<<endl;}private:void* operator new (size_t t);void  operator delete(void *ptr);};int main(){//A* a = new A; //会报错OnlyStack a;return 0;}



原创粉丝点击