您的位置:首页 > 编程语言 > C语言/C++

C++中要求(或禁止)对象产生于heap中

2011-02-15 13:46 495 查看
http://www.7880.com/info/2006/06/27/article-22921.html

要求对象产生于heap中
class HeapClass
{
  public:
   void Destory() const {delete this;}
  private:
   ~HeapClass(){} //析构函数无法访问,生成非heap对象将无法通过编译。
};
HeapClass* ptr = new HeapClass;
ptr->Destory();
这样的调用真是很厉害,想生成非Heap对象都不成了。

禁止对象产生于heap之中:
class HeapClass
{
  private:
   void* operator new(size_tsize); //无法访问new操作,无法产生heap对象。
   void* operator new[](size_tsize);
   void operator delete(void *ptr);
   void operator delete[](void* ptr);
  public:
   HeapClass(){printf("Constructor!/n");}
   HeapClass(const HeapClass&){printf("copy Constructor!/n");}
  public:
   ~HeapClass(){}
};

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: