C STL 過載運算子

2021-06-29 03:55:39 字數 959 閱讀 9501

一天,無意中看到如下類定義:

class foo

}怪在哪呢?就怪在粗體字的部分的,看上去挺彆扭的寫法,不就是

//方案二

bool operator<(const foo& other)  const

這樣不是更清晰?!難道是妙在少了一行**???

其實謎底在於,方案乙隻用了乙個小於號,而方案二卻用了小於號與等於號,多了乙個等於號;更正式來說

是要多過載乙個==號,例子中的a1,a2是基本型別,其==操作已預設實現,但當a1或a2為類時,就得自己重

載a1或a2的「==」運算子了。

換言之,在a1或a2為物件時,

方案一:只須過載小於運算子

方案二:必須過載小於運算子以及「==」運算子

c++ stl 過載運算子(++,--)

++,--均有字首(prefix),字尾(postfix)的形式,分別如下(這時只列舉為成員函式方式),

class foo

//對於 ++foo

foo& operator++()

n++;

return (*this);

//對於 foo++

foo&   operator++(int)

foo* foo = new foo(*this);

n++;

return (*foo);

//對於 --foo

foo& operator--()

n--;

return (this);

//對於 foo--

foo&   operator--(int)

foo* foo = new foo(*this);

n--;

return (*foo); }

由此可見,++foo 快於 foo++  ,--foo快於foo-- ,即字首運算效率要稍高於字尾,因為字尾運算有生成新對

象的開銷^_^

過載運算子

題目描述 定義乙個矩形類,資料成員包括左下角和右上角座標,定義的成員函式包括必要的建構函式 輸入座標的函式,實現矩形加法,以及計算並輸出矩形面積的函式。要求使用提示中給出的測試函式並不得改動。兩個矩形相加的規則是 決定矩形的對應座標分別相加,如 左下角 1,2 右上角 3,4 的矩形,與 左下角 2...

過載運算子

include include using namespace std class test test const int a v a test const test t1 v t1.v 以下過載小於號 比較兩個物件的大小 bool operator const test t1 const 比較物件...

過載運算子

1.當乙個過載的運算子是成員函式時,this繫結到左側運算物件。成員運算子函式的引數比運算物件的數量少乙個。非成員函式呼叫等價於 data1 data2 普通表示式 operator data1,data2 等價的函式呼叫成員函式呼叫等價於 data1 data2 普通表示式 data1.opera...