C++類的靜態變量的初始化

C++類的靜態變量

注意事項:
1.類的靜態變量首先是存在於任何對象之外,它不屬於任何一個類,所以對象中不包含任何與靜態數據成員有關的數據。
2.靜態成員函數不與任何對象綁定在一起,它們不包含this指針。
使用靜態變量:
1. 使用作用域運算符直接訪問靜態成員;
2. 類的對象、引用和指針能夠訪問靜態變量;
聲明和定義
聲明:用於爲變量分配存儲空間,還可爲變量指定初始值。程序中,變量有且僅有一個定義。
定義:用於向程序表明變量的類型和名字。
聲明靜態成員:
在成員的聲明之前加上關鍵字static。
class Singleton
{
private:
	static Singleton* instance;
	Singleton(){
    }
public:
	static Singleton* GetInstace()
	{
		if (NULL == instance)
		{
			instance = new Singleton();
		}
        return instance;
	}
};
定義靜態成員:
(1)可以在類的內部,外部定義靜態成員函數。當在類的外部定義靜態成員時候,不能重複static關鍵字,該關鍵字只能出現在類的內部的聲明語句中;
(2)對於靜態數據成員,在類的外部定義和初始化,一旦被定義,就存在於程序的整個生命週期當中。
(3)const整數類型的靜態變量可以類內初始化。
#include <iostream>
using namespace std;

/************************************************************************/
/* 單例模式:保證一個類僅有一個實例                                     */
/************************************************************************/

class Singleton
{
private:
	static Singleton* instance;
	Singleton(){
    }
public:
	static Singleton* GetInstace()
	{
		if (NULL == instance)
		{
			instance = new Singleton();
		}
        return instance;
	}
};
Singleton* Singleton::instance = Singleton::GetInstace();

void main()
{
   Singleton* instance1 = Singleton::GetInstace();
   Singleton* instance2 = Singleton::GetInstace();
   if (instance1 == instance2)
   {
       cout << "同一個實例" << endl;
   }
   system("Pause");
}


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