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

    技术2025-09-17  26

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

    最新回复(0)