C 高階 七 多型性3

2021-10-09 11:01:25 字數 1083 閱讀 1537

有些運算子不能過載為成員函式,例如二元運算子的左運算元不是物件,或者是不能由我們過載運算子的物件

表示式oprd1 b oprd2

等同於operator b(oprd1,oprd2 )

表示式 b oprd

等同於operator b(oprd )

表示式 oprd b

等同於operator b(oprd,0 )

• 將+、-(雙目)過載為非成員函式,並將其宣告為複數類的友元,兩個運算元都是複數類的常引用。 • 將<<(雙目)過載為非成員函式,並將其宣告為複數類的友元,它的左運算元是std::ostream引用,右運算元為複數類的常引用,返回std::ostream引用,用以支援下面形式的輸出:

cout << a << b;
該輸出呼叫的是:

operator << (operator << (cout, a), b);
源**:

//8_3.cpp

#include using namespace std;

class complex

friend complex operator+(const complex &c1, const complex &c2);

friend complex operator-(const complex &c1, const complex &c2);

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

private:

double real; //複數實部

double imag; //複數虛部

};complex operator+(const complex &c1, const complex &c2)

complex operator-(const complex &c1, const complex &c2)

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

int main()

C 高階 七 多型性2

運算子過載是針對新型別資料的實際需要,對原有運算子進行適當的改造。例如 過載為類的非靜態成員函式 過載為非成員函式。函式型別 operator 運算子 形參 引數個數 原運算元個數 1 後置 除外 規則 運算元 源 include using namespace std class complex ...

C 高階 七 多型性6

8 6.cpp include using namespace std class base1 class base2 public base1 void base2 display const class derived public base2 void derived display cons...

C 備考(七)多型性

學習沒有捷徑,但考試有捷徑 常量 const 符號 字串常量 立即數 引用和指標 類的封裝和隱藏 靜態成員 友元函式 類的初始化 初始化方式和順序 類的繼承 繼承方式 構函列表 多繼承 類的多型性 函式過載 運算子過載 虛函式 虛函式表 類的作用域概念 規則不可創造新的運算子 不可修改基本資料型別的...