c 賦值運算子的過載函式

2021-10-12 16:29:17 字數 848 閱讀 2484

首先我們來看object這個類,有以下幾個成員函式:

class

object

object

(const object& obj)

:value

(obj.value)

//拷貝建構函式

~object()

//析構函式

object&

operator=(

const object& obj)

//賦值運算子的過載函式

};

先來解釋一下運算子的過載函式為什麼它的返回值必須這個類的引用:通常情況下,在對物件進行操作時我們需要和對內建型別的變數的操作保持一致,比如說在int中可以對三個變數進行連續賦值,如下**所示:

int

main()

同樣的,我們也希望在對物件進行操作時可以進行物件的連續賦值,像下面這種情況:

int

main()

說完運算子過載函式的返回值是乙個類型別,接著來說其返回值是乙個類型別的引用的優點:就拿上面a,b,c三個物件來說,return *this是返回a物件本身,返回時就不用在額外生成臨時物件因此而提高效率。

在內建型別中,自賦值是沒有任何意義的,在物件中也是一樣的,即物件a=a,自己給自己賦值毫無意義可言,所以我們將上面的賦值運算子的過載函式可以改為如下形式:

object&

operator=(

const object& obj)

return

*this

;}

C 賦值運算子的過載函式

賦值運算子的過載函式基本可以確定為兩種寫法,一種是初級程式設計師的寫法,另外一種是高階程式設計師的寫法,下面將對賦值運算子的過載函式的兩種形式進行解析。1 初級程式設計師的寫法 test operator const test src 防止記憶體丟失和淺拷貝 delete ptr 此處存在問題 pt...

C 運算子過載賦值運算子

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

賦值運算子過載函式

問題 給出如下cmystring的宣告,要求為該型別新增賦值運算子函式。class cmystring 當面試官要求應聘者定義乙個複製運算子函式時,他會關注如下幾點 是否把返回值的型別宣告為該型別的引用,並在函式結束前返回例項自身 即 this 的引用?只有返回乙個引用,才可以允許連續賦值。否則如果...