cavan
//只能在堆上分配对象并且可以实现继承
class Test_Heap{
protected:
Test_Stack(){};
~Test_Stack(){};
public:
static Test_Stack* create(){
return new Test_Stack();
}
void destroy(){
delete this;
}
};
//只能在栈上分配对象并且可以实现继承
class Test_Heap{
private:
void* operator new(size_t t){};
void operator delete(void* ptr){};
public:
Test_Heap(){};
~Test_Heap(){};
};
class CSingleton{public:static CSingleton * GetInstance(){if(NULL == m_pInstance)m_pInstance = new CSingleton();return m_pInstance;}static void Release() //必须,否则会导致内存泄露{if(NULL != m_pInstance){delete m_pInstance;m_pInstance = NULL;}}protected:CSingleton(){cout<<"CSingleton"<<endl;};static CSingleton * m_pInstance;};CSingleton* CSingleton::m_pInstance = NULL;