唯一實例

class CA  
{
private:
	CA();
	~CA();

public:
	static CA* InitObject();  //靜態成員在沒有創建對象的情況下就可以訪問
	void Release();

private:
	static int m_sCount;
};

int CA::m_sCount = 0;   //靜態成員必須在類外定義

CA::CA()
{

}

CA::~CA()
{

}

CA* CA::InitObject()
{
	static CA *pObj = NULL;  //全局,作用在函數體內
	if(0 == m_sCount)
	{
		pObj = new CA;
	}

	m_sCount++;

	return pObj;
}

void CA::Release()
{
	m_sCount--;

	if(0 == m_sCount)
	{
		delete this;
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章