如果使用者沒有編寫賦值操作符函式,編譯器就會自動為使用者建立乙個。這就是為什麼使用者可以實現p1=p2,為類賦值。
語法:類名 &operator=(const 類名 &source_arg)
說到這裡,便想起來之前提到的副本構造器,用到副本構造器的地方其中之一是用某個物件去初始化另乙個物件。point a(1,2); point b(a);
賦值操作符函式看起來似乎和副本構造器很像,同樣都是簡單的「成員到成員」的方式進行複製。其實有很大的區別,副本構造器會建立乙個新物件,而賦值操作符不會,它會返回乙個物件類的引用。在c++中賦值操作符函式必須返回乙個值,且返回的值必須是左運算元型別,即與呼叫者(左運算元)物件同型別。於是,利用*this返回物件自身。
class point
point()
int getx();
int gety();
point &operator=(const point &other)
};int main()
int point::gety()
結果:2 3
看成p呼叫自身的&operator=函式,n作為引數傳入。
C 賦值操作符
定義類時,編譯器會自動幫我們定義的有四個 建構函式 析構函式 複製建構函式 賦值操作符。賦值操作符定義了該型別的物件賦值時會發生什麼。過載操作符是一些函式,其名字為operator後跟著所定義的操作符的符號。通過定義名為operator 的函式,我們可以對賦值操作符進行定義。該函式有返回值和形參表。...
賦值操作符
與類要控制初始化物件的方式一樣,類也定義了該型別物件賦值時會發生什麼 sales item trans,accum trans accum 與複製建構函式一樣,如果類沒有定義自己的賦值操作符,則編譯器會合成乙個。過載操作符是一些函式,其名字為 operator 後跟著所定義的操作符的符號。因此,通過...
賦值操作符
預設的賦值操作符用於處理同類物件之間的賦值,不要與複製建構函式混淆.如果是建立新的物件,則呼叫複製 拷貝 建構函式,如果是修改已有物件的值,則呼叫賦值操作符 myclass aclass myclass bclass aclass 呼叫複製建構函式 myclass cclass cclass acl...