C 運算子過載 11 過載 和 操作符

2021-07-02 21:05:12 字數 984 閱讀 3390

運算子 「<<」 用於流輸出,而運算子「>>」用於流輸出。

在開始過載這些操作符之前,必須注意下面的事項:

1) cout是輸出類的物件,而cin是輸入類的物件

2) 這些操作符必須過載為全域性函式。如果想要讓它們可以訪問私有成員,則必須定義為友元。

為何必須過載為全域性函式?

如果操作符過載為乙個成員函式,則它必須是物件的成員,且出現在操作符的左側。

例如,考慮表示式 「ob1 + ob2″ (假設ob1和ob2是兩個不同類的物件)。為了編譯通過,需要在類'ob1'中過載'+'運算子,或者使得'+'是乙個全域性函式。

運算子『<<'和 '<<'的呼叫形式一般為'cout << ob1'和'cin >> ob1'。所以如果將它們做為乙個成員函式,並且物件能出現在操作符的右側,則我們需要將ob1和ob2定義為ostream類和istream類的成員。

顯然這是不太現實的。因此, 一般將這些操作符過載為接收兩個引數的全域性函式,其中乙個引數為cout, 另乙個為自定義類的物件。

下面程式演示了運算子 << 和 >> 的過載。

#include using namespace std;

class complex

friend ostream& operator << (ostream& out, const complex& c);

friend istream& operator >> (istream& in, complex& c);

};ostream& operator << (ostream& out, const complex& c)

istream& operator >> (istream& in, complex& c)

int main()

執行結果:

enter real part 10

enter imaginary part 20

the complex object is 10+i20

9 過載操作符

include includeusing namespace std class num void print 也可以在內部提供乙個 號操作符過載,但和全域性 號過載如果呼叫方法一致,就只能存在乙個 num operator num other 過載 是修改自身,不能返回新物件,所以要返回自身引用 ...

C C 過載操作符(二) 過載操作符

用於訪問一組元素中的乙個元素。預設的,陣列是支援下標訪問的。中的下標稱為 索引,key,唯一標誌符 當乙個物件設計用於包含多個元素時,可以過載操作符 比如乙個字串text包含多個元素 每個元素是乙個字串 text txt helloworld char ch text 0 比如在乙個datastor...

6 過載操作符(operator)介紹

operator 是c 的乙個關鍵字,它和運算子 如 一起使用,表示乙個運算子過載函式,在理解時可將operator和運算子 如operator 視為乙個函式名。使用operator過載運算子,是c 擴充套件運算子功能的方法。使用operator擴充套件運算子功能的原因如下 對於c 提供的所有操作符...