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