賦值操作符 加號 操作符過載的一些注意

2022-08-21 17:36:09 字數 596 閱讀 8065

賦值操作符

1、賦值必須返回對 *this 的引用

這與內建型別的賦值一致。而且, 因為賦值返回乙個引用,就不需要建立和撤銷結果的臨時副本

2、是否為自賦值

用if(this==&other)來判斷,若是,直接返回*this

否則,自賦值可能會導致dangling pointer

3、是否需要delete掉分配給*this的記憶體空間

如果不delete,直接賦值,會導致memory leak

加號操作符過載

1.一般而言,將算術和關係操作符定義為非成員函式

2.加法操作符並不改變操作符的狀態,操作符是對 const 物件的引用

3.為了與內建操作符保持一致,加法返回乙個右值, 而不是乙個引用

4.要返回的右值一般用複製建構函式建立區域性變數,不要自己新new乙個,否則當函式結束時沒法delete掉

C 過載賦值操作符

類過載賦值操作符一般都是作為成員函式而存在的,那函式應該返回什麼型別呢?參考內建型別的賦值操作,例如 int x,y,z x y z 15 賦值行為相當於x y z 15 也就是賦值操作應該返回左運算元的引用,因此,為了和內建型別相容,類中過載賦值操作符應該返回左運算元的引用,即 this,如下類a...

賦值操作符

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

賦值操作符

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