C 過載賦值運算子

2021-08-02 02:43:34 字數 627 閱讀 1220

#include using namespace std;

class a

a(int a_)

a(const a& a1)

setvalue(int v)

int getvalue() const

a& operator =(const a& a_);

};//過載賦值運算子

a& a::operator =(const a& a_)

return *this;//返回當前物件的引用

}int main()

注意事項:

將返回值的型別宣告為該型別的引用,並在函式結束前返回例項自身的引用(*this),只有這樣才可以連續賦值;

把傳入的引數型別宣告為常量引用。只可以引用傳遞,不可以值傳遞;

釋放例項自身已有的記憶體;避免記憶體洩漏;

判斷傳入的引數和當前例項是不是同乙個例項;

為什麼int getvalue() const要加const?

因為setvalue(a_.getvalue()); 例項a_是const,要呼叫const的例項的方法,必須將其方法也宣告為const。否則,編譯器會認為getvalue()方法可能會修改該例項,就會報錯。

C 運算子過載賦值運算子

自定義類的賦值運算子過載函式的作用與內建賦值運算子的作用類似,但是要要注意的是,它與拷貝建構函式與析構函式一樣,要注意深拷貝淺拷貝的問題,在沒有深拷貝淺拷貝的情況下,如果沒有指定預設的賦值運算子過載函式,那麼系統將會自動提供乙個賦值運算子過載函式。賦值運算子過載函式的定義與其它運算子過載函式的定義是...

C 賦值運算子過載

c 賦值運算子過載,為什麼要返回引用?查了許多資料,基本有兩種說法 一 c c 賦值運算子的本意為 返回左值的引用 左值 賦值號左面的變數而非其值 可用以下程式段測試 int a,b 3,c 2 a b c cout 對於x y x,y均為物件時 若不返回左值的引用,將會生成臨時物件。如果不處理x ...

C 過載賦值運算子

c 類建立時,會產生乙個預設的賦值運算子函式 a operator const a 普通類例項之間賦值可能沒問題,但當類成員變數中有指標引用的動態記憶體時,複製後只是簡單地將指標值複製,而沒有將其指向的動態記憶體也拷貝乙份,這樣即多個類例項內的指標指向同一動態記憶體,當類例項析構時,會導致這塊動態記...