賦值操作符和拷貝建構函式

2022-09-02 07:51:08 字數 918 閱讀 8715

最近開發乙個專案,用到了單例模式,標頭檔案大概如下

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...