C 備考(七)多型性

2021-09-29 16:16:59 字數 1241 閱讀 6972

學習沒有捷徑,但考試有捷徑

常量(const、符號、字串常量、立即數)

引用和指標

類的封裝和隱藏(靜態成員、友元函式)

類的初始化(初始化方式和順序)

類的繼承(繼承方式、構函列表、多繼承)

類的多型性(函式過載、運算子過載、虛函式、虛函式表)類的作用域概念

規則不可創造新的運算子

不可修改基本資料型別的運算子操作

不可過載的運算子

*::.? :

乙個疑惑

在實現極座標形式複數的表示時,疑惑:

如何過載乘法符號*

答案:可以過載,僅*做為取內容運算子時不能過載

避免二義性問題

void

fun(

void);

void

fun(

int a =6)

;

不可同時使用,最好使用引數預設方式

公有繼承時,派生類是基類的子型別

派生類的物件可以做為基類的物件進行處理,需要基類物件的任何地方都可以使用公有派生類的物件來代替,可以使用相同的函式統一處理。

關係可以傳遞,但不可逆

可以將派生類賦值給基類

乙個指向基類的指標可以指向任何公有派生類的物件

將基類函式(成員函式,除建構函式)指定為虛函式

virtual

void

printstandard()

;

則派生類可對其進行重新定義,若不修改則沿用基類函式

必須完全一致

函式形參為基類引用或指標,實參傳入派生類物件,若呼叫函式為虛函式則可呼叫派生類對應的函式。

但僅在派生類中重新定義只能呼叫基類函式。

虛函式表(virtual function table)基類需要靠派生類提供各個具體實現版本

基類為抽象類,可傳遞

virtual

void

printstandard()

=0;

可以在宣告為虛函式的同時,提供實現版本

不得宣告純虛函式為內聯函式

C 高階 七 多型性2

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

C 高階 七 多型性3

有些運算子不能過載為成員函式,例如二元運算子的左運算元不是物件,或者是不能由我們過載運算子的物件 表示式oprd1 b oprd2 等同於operator b oprd1,oprd2 表示式 b oprd 等同於operator b oprd 表示式 oprd b 等同於operator b opr...

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...