C++中要求(或禁止)對象產生於heap中

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(){} 
};

發佈了10 篇原創文章 · 獲贊 3 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章