#include using namespace std;
class cperson
~cperson()
cperson(const cperson &p) //cperson* pp = new cperson(*ps); 為了防止這種初始化,將拷貝構造設定為私有的
public:
static cperson* getobject()
else
return 0;
} //static void destroyobject(cperson *pp)
//};
bool cperson::bflag = false;
//這種方法在多執行緒模型中,同時訪問的時候就可能同時建立多個例項,而且這多個例項不是同乙個物件
//餓漢式:單例例項在類裝載時就構建,急切初始化。(預先載入法)
優點: 1.執行緒安全
2.在類載入的同時已經建立好乙個靜態物件,呼叫時反應速度快
缺點: 資源效率不高,可能getinstance()永遠不會執行到
//餓漢模式
class test
~test()
public:
static test *instance;
public:
static test* getinstance() };
test* test::instance = new test();
靜態資料成員和普通資料成員區別較大,體現在下面幾點:
(1)普通資料成員屬於類的乙個具體的物件,只有物件被建立了,普通資料成員才會被分配記憶體。而靜態資料成員屬於整個類,即使沒有任何物件建立,類的靜態資料成員變數也存在。
(2)因為類的靜態資料成員的存在不依賴與於任何類物件的存在,類的靜態資料成員應該在**中被顯式地初始化,一般要在類外進行,例如上例。在c++11標準中,我們可以為靜態成員提供const整數型別的類內初始值,不過要求靜態成員必須是字面值常量型別的constexpr(源自c++primer中文版270頁)。
(3)外部訪問類的靜態成員能直接通過類名來訪問,例如:test::getcount()。雖然靜態成員不屬於類的某個物件,但是我們仍然可以使用類的物件、引用或指標來訪問靜態成員(源自c++primer中文版269頁),例如:
test ac1,*ac2;
int r;
r=ac1.getcount();// 或者 r=ac2->getcount();
(4)類的靜態成員函式無法直接訪問普通資料成員(可以通過物件名間接的訪問),而類的任何成員函式都可以訪問類的靜態資料成員。
(5)靜態成員和類的普通成員一樣,也具有public、protected、private3種訪問級別,也可以具有返回值、const修飾符等引數。
Singleton 單例 模式
singleton 模式的宗旨在於確保某個類只有乙個例項,別且為之提供乙個全域性訪問點。為了防止其他工作人員例項化我們的類,可以為該類建立唯一乙個構造器,並將構造器的可見 設定為私有。值得注意的是,如果我們建立了其他的非私有的構造器,或者根本沒有為該類提 供構造器,那麼其他人員還是能例項化我們的類。...
Singleton 單例 模式
今天看了,單例模式。感覺他的本質就是,控制類例項的個數。特例就是,控制static變數的唯一性,保證各個程式共享著同一例項。乙個例子 package singleton description 這是乙個單例模式的使用demo author kyle goal 實現乙個類僅有乙個例項 singleto...
單例(Singleton)模式
單例模式的特點 singleton模式包含的角色只有乙個,那就是singleton。singleton擁有乙個私有建構函式,確保使用者無法通過new取得singleton的例項。除此之外,該模式中包含乙個靜態私有成員變數instance與靜態公有方法instance。instance方法負責檢驗並例...