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