编写C++中的两个类 一个只能在栈中分配空间 一个只能在堆中分配。

来源:互联网 发布:win7如何添加网络连接 编辑:程序博客网 时间:2024/05/26 14:10
#include<iostream>using namespace std;//只能在堆上分配内存class HeapOnly{public:HeapOnly(){cout<<"Construct."<<endl;}void destory(){delete this;}private:~HeapOnly(){}};//只能在栈上分配空间class StackOnly{public:StackOnly(){}~StackOnly(){}private:void* operator new(size_t size)   //将new操作符私有化,在外面无法调用{}};int main(){HeapOnly *hO=new HeapOnly();hO->destory();//HeapOnly he; //编译错误:HeapOnly::~HeapOnly”: 无法访问 private 成员(在“HeapOnly”类中声明),所以不能通过栈来分配这个对象的空间StackOnly so;//StackOnly *st=new StackOnly();  //StackOnly::operator new”: 无法访问 private 成员(在“StackOnly”类中声明)}
因为 栈 是由系统自动分配和释放的,故如果要限制在栈中分配内存的话,可以把析构函数设为私有,这样系统就不能自动调用析构函数了。
                                             
0 0