C 操作符過載

2021-05-24 04:59:23 字數 998 閱讀 1183

最近看了操作符過載,《c++ primer》中提到許多,但是我看完之後沒啥特別的印象,所以整理一下。

1 不能過載的操作符  ::   *      ?:

2過載操作符必須具有乙個類型別的運算元

3優先順序及結合性是固定的

4作為類成員的過載函式,其形參比運算元少1,是因為有乙個隱含的this參,限定為第乙個運算元

5當過載函式作為非成員函式,但是訪問了類的私有成員,則將其定義為該類的友元函式,這其實對其他的也是使用的

6io操作符過載必須成為非成員函式

7賦值操作符必須成為成員函式,下標操作符也是一樣

8過載箭頭操作符必須返回指向類型別的指標,或者返回定義了自己的箭頭操作符的類型別物件。

9如果返回的是全新的乙個值,乙個空間,比如+,那麼返回型別可以使用類型別,如果返回的是原先已有的空間,比如=號的過載,最好使用的就是類型別的引用。

10通過過載定義函式物件,所謂函式物件,就是可以直接使用物件,實現函式呼叫等效果,用在標準庫中比較多。其實就是過載操作符為(),這個過載函式的引數就是這個函式物件的引數

11函式介面卡,用於擴充套件一元和二元的函式物件,有兩類介面卡:(1)繫結器 將乙個運算元繫結到給定值而將二元物件轉換為一元函式物件如 count_if(vec.begin,vec.end,bind2nd(less_equal(),10))  bind1st將定值繫結到二元函式物件的第乙個物件(2)求反器 將謂詞函式物件的真值求反。not1 not2  ,not1將一元函式物件求反。比如:count_if(vec.begin,vec.end,not1(bind2nd(less_equal(),10))) 

下面是一些測試的**,就不解釋了,執行一下就知道了。

class a

bool operator()(a & bb)

};#include"test.h"

#include

using namespace std;

a operator -(a & b,a & c)

void main()

C 操作符過載

1.作為成員過載 class myclass public myclass operator const myclass d cons friend myclass operator const myclass a1,const myclass a2 關於返回值型別的討論 呼叫者堆疊裡返回乙個物件效...

C 過載操作符

過載操作符 一 過載操作符的定義 1.過載操作符的結構 返回型別 operator 需要過載的操作符 形參列表 注意 形引數目應和運算元數目相同。2.過載操作符的幾條注意事項 1 過載的操作符名不能通過連線其他合法符號來建立任何新的操作符。如 2 過載操作符必須具備至少乙個類型別或列舉型別的運算元。...

c 操作符過載

過載操作符 一 限制 1 不能增加新的操作符 2 有些操作符不能過載,如.物件中的訪問成員 作用域解析操作符 sizeof 三元操作符 3 不能改變操作符的元數,元數是指與操作符相關的引數或運算元個數。比如一元操作符 只能應用於乙個操作符 4 不能改變操作符的優先順序 5 不能重新定義內建型別的操作...