二進制操作符@(+, -,*, /等)
一般而言,對于某個二進制操作符@,應定義其指派形式,使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 ,如需轉載請自行聯系原作者