程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Effective C++(10) 重載賦值操作符時,返回該對象的引用(retrun *this)

Effective C++(10) 重載賦值操作符時,返回該對象的引用(retrun *this)

編輯:C++入門知識

問題聚焦:

這個准則比較簡短,但是往往就是這種細節的地方,可以提高你的代碼質量。 細節決定成敗,讓我們一起學習這條重載賦值操作符時需要遵守的准則吧。

還是以一個例子開始: Demo
// 連鎖賦值
x = y = z = 15;
// 上面的表達式等價於
x = ( y = ( z = 15 ) );


為了實現上述的連鎖賦值,賦值操作符必須返回一個reference指向操作符的左側實參。 即:
class Widget {
public:
    Widget& operator=(const Widget& rhs)
   {
        ....
        return* this;
    }
};


這可以認為是一個協議,適用於所有賦值相關運算
class Widget {
public:
    ...
    Widget& operator+=(const Widget& rhs)
    {
        ....
        return *this;
    }
    Widget& operator=(const Widget& rhs)
    {
        ...
        return *this;
    }
};


使用這個協議的理由:所有內置類型和標准程序庫提供的類型如:string, vector, complex, tr1::shared_ptr或即將提供的類型共同遵守。除非你有一個標新立異的好理由,不然還是隨眾吧。。
小結: 令重載賦值操作符返回一個當前對象的引用(reference to *this)

參考資料: 《Effective C++ 3rd》

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved