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