C 之過載操作符與友元

2021-06-28 21:07:50 字數 1422 閱讀 3877

操作符過載c++多型的一種形式。過載函式形式:operator op(argument -list),其中op是操作符,操作符過載限制:

1.過載後的操作符必須有至少乙個使用者自定義的型別(防止使用者為標準型別過載操作符)。譬如不能過載操作符「-」去做double型別的減法

2.使用操作符不能違反原操作符的語法規則。譬如你不能將乙個求模操作符(%)過載成乙個使用運算元:

int x;

time shiva;

%x;%shiva;

同樣不能修改原操作符的優先順序

3.不能定義新的操作符

4.不能過載一下的操作符:

sizeof-sizeof操作符

.——成員操作符

.*——成員指標操作符

::——作用域解析操作符

?:——條件操作符

typeid——乙個rtti操作符

const_cast——強制型別轉換操作符

dynamic_cast——強制型別轉換操作符

reinterpret_cast——強制型別轉換操作符

static_cast——強制型別轉換操作符

常用友元:過載《操作符

:void operator <<(ostream &os,const time &t)——過載了《操作符,能輸出乙個類物件,但不能拼接輸出

譬如:cout《就可以拼接輸出了。

#include "rational.h"

complex0::complex0()

complex0::complex0(double real,double img)

complex0 complex0::operator+(const complex0 &c1)

complex0 complex0::operator-(const complex0 &c1)

complex0 complex0::operator*(const complex0 &c1)

//friend methods

complex0 operator~(complex0 &c1)

complex0 operator*( complex0 &c1,double d)

std::ostream & operator<<(std::ostream &os,const complex0 & c)//過載<<

std::istream & operator >>(std::istream &is, complex0 & c)//過載》

else }

complex0 c1(3.0,4.0);//呼叫建構函式賦值

complex0 c;

cout<<"請按下enter 鍵開始輸入乙個複數 (按q 或q 退出:\n";

while(cin>>c)

cout<<"done! \n"; return 0;

友元及操作符過載

友元 c 控制類物件私有部分的訪問,但有時候需要在類的外部訪問類的私有成員,這種情況下 c 提供了友元機制。友元函式,友元類 宣告為某一類 class 1 的友元函式 test 或則友元類 class 2 後,在 test 或則 class 2 中可以訪問 class 1 的私有成員。在類裡面宣告 ...

C 友元過載輸出操作符(下篇)

假設trip是乙個time物件。為顯示time的值,可以使用show 函式,然而,如果可以像下面這樣操作更好 cout trip make cout recognize time class?解釋 是可以被過載的c 運算子之一。cout是乙個 ostream 物件,它是智慧型的,能夠識別所有的c 基...

C 之操作符過載

1.所謂過載,就是賦予其新的意義。函式可以過載,操作符也可以過載。操作符的過載給我們的程式設計帶來了很大的便利,因為操作符只能對基本的資料型別進行操作,而對使用者自定義的類等資料結構型別不支援。因此只能對其操作符進行過載之後,才能更加方便地操作我們自定義的類物件等資料型別。但是值得注意的是並不是c ...