在網上搜尋相關資料時,看到有人說,賦值操作符可以被繼承,並且給出了乙個例子。
一時間,也沒想出那個例子錯在**。
例子**如下:
#include usingnamespace
std;
class
a };
class b: publica
void
printnum() };
intmain()
在上面這個例子中,派生類呼叫了基類的賦值操作符,但是這不能表明派生類繼承了基類的賦值操作符。
當派生類沒有形如 b& operator=(const b& t);這樣的賦值操作符函式時,編譯器會自動生成乙個預設的賦值操作符函式。
同時這個函式,會去呼叫基類的賦值操作符函式。這也就是我們上面這個例子,讓我們誤以為繼承了基類賦值操作函式的原因。
我們知道滿足以下乙個條件時,編譯器並不會為類提供預設的賦值操作函式。
①類中含有常資料成員
②類中含有引用型別的成員
因此,如果將類b改寫為:
class b: publicavoid
printnum()
};
那麼,這個時候就會報錯。
C 賦值操作符
定義類時,編譯器會自動幫我們定義的有四個 建構函式 析構函式 複製建構函式 賦值操作符。賦值操作符定義了該型別的物件賦值時會發生什麼。過載操作符是一些函式,其名字為operator後跟著所定義的操作符的符號。通過定義名為operator 的函式,我們可以對賦值操作符進行定義。該函式有返回值和形參表。...
賦值操作符
與類要控制初始化物件的方式一樣,類也定義了該型別物件賦值時會發生什麼 sales item trans,accum trans accum 與複製建構函式一樣,如果類沒有定義自己的賦值操作符,則編譯器會合成乙個。過載操作符是一些函式,其名字為 operator 後跟著所定義的操作符的符號。因此,通過...
賦值操作符
預設的賦值操作符用於處理同類物件之間的賦值,不要與複製建構函式混淆.如果是建立新的物件,則呼叫複製 拷貝 建構函式,如果是修改已有物件的值,則呼叫賦值操作符 myclass aclass myclass bclass aclass 呼叫複製建構函式 myclass cclass cclass acl...