Effective_C++:15、令operator=傳回“*this的reference”

15、令operator=傳回“*this的reference”

1、const變量、const指針、const引用

        const變量是指變量的值不能改變,const指針是指使用該指針不能改變他指向的對象的值,const引用是指使用該引用不能改變與他綁定的對象的值。

        const指針可以指向const變量與非const變量,但非const指針只能指向非const變量。

        const引用可以與const變量或非const變量綁定,但非const引用只能與非const變量綁定。

2、令operator=傳回“*this的reference”

        我們期望能自定義一些型別,並且這些型別與內建型別相仿,所以我們可以將運算符重載。如int型支持賦值操作符串聯在一塊,也支持隱式類型轉換。
        若我們要定義自定義類型的operator=(),令他接受一個const引用的參數是一個不錯的選擇,函數不能改變入參的值,且接受const變量與非const變量;而令他傳回一個引用,則使得他像int型一樣實現賦值操作符的串聯,即便入參進行了隱式類型轉換(進行隱式類型轉換,產生一個臨時的const對象,而函數的入參正是這個臨時對象)。這裏,不傳回const引用的原因是內建型別並沒有那麼做,他們允許返回值作爲左值(儘管那樣沒什麼意義)。此時,函數中有兩個引用,*this引用與入參的const引用,故只能傳回*this的引用。

        總之,令operator=傳回“*this的reference”,否則可能會妨礙到賦值操作符的串聯使用,也可能妨礙到調用端的隱式類型轉換。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章