//只能在堆上分配对象并且可以实现继承 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;