天天看點

[C++再學習系列] 二進制操作符重載

 二進制操作符@(+, -,*, /等)

     一般而言,對于某個二進制操作符@,應定義其指派形式,使a@=b和a=a@b具有相同的含義。一般第一種形式更加高效,因為僅計算一次a。具體實作的标準方法如下:

T& T::operator@=( const T& ) {

 // …implementation …

 return *this;

}

T operator@( const T& lhs, const T&rhs ) {

 T temp( lhs )

 return temp @= rhs;

    注意這裡operator@是非成員函數,是以該函數能夠接受左參數和右參數的隐式轉換。

    從上述的具體實作中,可以知道operator@直接改變a的值,并傳回a的引用。故可以有如下的使用方法:

      (a@=b).function() 即,因傳回對象a,故可進一步操作對象。T operator@傳回臨時對象,故對該對象進行操作是沒有意義的,應該先用具名變量擷取該對象值,再操作具名變量。

---------------------------------------------------

歡迎轉載,請注明作者和出處。

本文轉自 zhenjing 部落格園部落格,原文連結:  http://www.cnblogs.com/zhenjing/archive/2010/11/24/1886417.html ,如需轉載請自行聯系原作者

繼續閱讀