有的操作符過載函式只能是友元函式

2021-08-26 05:55:39 字數 513 閱讀 8712

運算子過載為成員函式,第乙個引數必須是本類的物件。而《和》的第乙個運算元一定是ostream型別,所以《只能過載為友元函式。

(1) 只能為友元

>> ( 輸入流操作 )

<< ( 輸出流操作 )

(1)**

#includeusing namespace std;

class test

private:

int a;

int b;

};ostream& operator<<( ostream &out, test &obj )

istream& operator>>( istream &in, test &obj )

int main()

(2)輸出

# ./operator 

1 2input int:3 4

3 4

友元及操作符過載

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

C 之過載操作符與友元

操作符過載c 多型的一種形式。過載函式形式 operator op argument list 其中op是操作符,操作符過載限制 1.過載後的操作符必須有至少乙個使用者自定義的型別 防止使用者為標準型別過載操作符 譬如不能過載操作符 去做double型別的減法 2.使用操作符不能違反原操作符的語法規...

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

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