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

2021-09-26 09:45:48 字數 714 閱讀 4531

在定義子類的拷貝建構函式和賦值操作符時,基本的原則是子類一定要呼叫父類的相應函式,以下定義了父類base類和子類derived類來說明兩個函式的寫法:

class base

public:

base(){}

virtual ~base(){}

base(const base& rhs){}

base& operator=base(const base& rhs){}

virtual void do(){}

class derived : public base

public:

derived() : base() {}

~derived(){}

derived(const derived& rhs) : base(rhs)

// 子類成員賦值。。。

derived& derived::operator=(const derived& rhs)

// 防止自賦值

if(this == &rhs)

return *this;

// 呼叫父類賦值操作符的第一種方法

base::operator=(rhs);

// 呼叫父類賦值操作符的第二種方法,對*this的base部分賦值

static_cast(*this) = rhs;

// 子類成員賦值。。。

return *this;

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

類有預設的建構函式 拷貝建構函式 析構函式 賦值操作運算子 和取位址運算子 預設的賦值操作運算子和預設的拷貝建構函式類似,對於每個非static成員,都是執行逐個成員賦值 memberwise assignment 同時也是按位賦值 bitwise copy 即,只是簡單地將每個類成員的記憶體中的直...

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

最近開發乙個專案,用到了單例模式,標頭檔案大概如下 class crecguard crecguard private void guard void unguard private critical section cs template class csingleton 禁止建構函式 csing...

複製建構函式和賦值操作符 深拷貝,淺拷貝

首先,大家要知道,c 類有以下這些極為重要的函式 一 複製建構函式。二 賦值函式。我們先來講複製建構函式。什麼是複製建構函式呢?比如,我們可以寫下這樣的 string test1 test2 這是進行初始化。我們知道,初始化物件要用建構函式。可這兒呢?按理說,應該有宣告為這樣的建構函式 string...