最近開發乙個專案,用到了單例模式,標頭檔案大概如下
class crecguard
~crecguard()
private:
void guard()
void unguard()
private:
critical_section cs;
};template
class csingleton
//禁止建構函式
~csingleton(){} //禁止虛構函式
csingleton(const csingleton&){} //禁止複製建構函式
csingleton & operator= (const csingleton &){} //禁止賦值拷貝函式
static crecguard _gd;
static auto_ptr_instance;
};template
auto_ptrcsingleton::_instance;
template
crecguard csingleton::_gd;
template
inline t* csingleton::instance()
}return _instance.get();
}ctemp a(b); //複製建構函式,c++風格的初始化
ctemp a=b; //仍然是複製建構函式,不過這種風格只是為了與c相容,與上面的效果一樣
在這之前a不存在,或者說還未構造好。
ctemp a;
a=b; //賦值拷貝函式
在這之前a已經通過預設建構函式構造完成。
知道這兩個東西的意思以後,上面的**就很好理解了,這兩個函式後面的{}部分都是空的,這樣就起到了禁止的作用。
拷貝建構函式和賦值操作符
類有預設的建構函式 拷貝建構函式 析構函式 賦值操作運算子 和取位址運算子 預設的賦值操作運算子和預設的拷貝建構函式類似,對於每個非static成員,都是執行逐個成員賦值 memberwise assignment 同時也是按位賦值 bitwise copy 即,只是簡單地將每個類成員的記憶體中的直...
子類的拷貝建構函式和賦值操作符
在定義子類的拷貝建構函式和賦值操作符時,基本的原則是子類一定要呼叫父類的相應函式,以下定義了父類base類和子類derived類來說明兩個函式的寫法 class base public base virtual base base const base rhs base operator base ...
複製建構函式和賦值操作符 深拷貝,淺拷貝
首先,大家要知道,c 類有以下這些極為重要的函式 一 複製建構函式。二 賦值函式。我們先來講複製建構函式。什麼是複製建構函式呢?比如,我們可以寫下這樣的 string test1 test2 這是進行初始化。我們知道,初始化物件要用建構函式。可這兒呢?按理說,應該有宣告為這樣的建構函式 string...