C 賦值操作符不能繼承

2022-07-31 08:06:16 字數 638 閱讀 8692

在網上搜尋相關資料時,看到有人說,賦值操作符可以被繼承,並且給出了乙個例子。

一時間,也沒想出那個例子錯在**。

例子**如下:

#include using

namespace

std;

class

a };

class b: publica

void

printnum() };

intmain()

在上面這個例子中,派生類呼叫了基類的賦值操作符,但是這不能表明派生類繼承了基類的賦值操作符。

當派生類沒有形如 b& operator=(const b& t);這樣的賦值操作符函式時,編譯器會自動生成乙個預設的賦值操作符函式。

同時這個函式,會去呼叫基類的賦值操作符函式。這也就是我們上面這個例子,讓我們誤以為繼承了基類賦值操作函式的原因。

我們知道滿足以下乙個條件時,編譯器並不會為類提供預設的賦值操作函式。

①類中含有常資料成員

②類中含有引用型別的成員

因此,如果將類b改寫為:

class b: publica 

void

printnum()

};

那麼,這個時候就會報錯。

C 賦值操作符

定義類時,編譯器會自動幫我們定義的有四個 建構函式 析構函式 複製建構函式 賦值操作符。賦值操作符定義了該型別的物件賦值時會發生什麼。過載操作符是一些函式,其名字為operator後跟著所定義的操作符的符號。通過定義名為operator 的函式,我們可以對賦值操作符進行定義。該函式有返回值和形參表。...

賦值操作符

與類要控制初始化物件的方式一樣,類也定義了該型別物件賦值時會發生什麼 sales item trans,accum trans accum 與複製建構函式一樣,如果類沒有定義自己的賦值操作符,則編譯器會合成乙個。過載操作符是一些函式,其名字為 operator 後跟著所定義的操作符的符號。因此,通過...

賦值操作符

預設的賦值操作符用於處理同類物件之間的賦值,不要與複製建構函式混淆.如果是建立新的物件,則呼叫複製 拷貝 建構函式,如果是修改已有物件的值,則呼叫賦值操作符 myclass aclass myclass bclass aclass 呼叫複製建構函式 myclass cclass cclass acl...