C 多型學習(二)完整定義 什麼是多型?

2021-08-21 15:21:40 字數 1032 閱讀 3513

函式過載,是一種多型現象,通過命名傾軋在編譯階段決定,故稱為靜多型。

動多型,不是在編譯器階段決定,而是在執行階段決定,故稱為動多型。動多型形成的條件如下:

1,父類中有虛函式

2,子類override(覆寫)父類中的虛函式。

3,將子類物件位址賦給父類的指標,並發生虛函式呼叫。(如果不用指標,用引用必須一開始必須繫結乙個,而且一經確定,引用無法改)

virtual void func();  //宣告型關鍵字

對比之前的過載和shadow

overload過載    同一作用域中,函式名相同,引數列表不同

shadow             發生在父子類中的同名成員

override            發生在父子類中,父類中函式含有 virtual 宣告的函式

子類中,同參、同名、同返回的函式,構成覆寫

ps:覆寫的函式是否一定同父類的訪問方式一樣(public,private,protected),看子類的需求。

例子:

class shape

virtual void draw();

protected:

int _x,_y;

};void shape::draw()

小結:1,在基類中用virual宣告成員函式為虛函式。類外實現虛函式時,不必再加virtual.

2,在派生類中重新定義此函式稱為覆寫,要求函式名,返值型別,函式引數個數及型別全部匹配。並根據派生類的需要重新定義函式體。

3,當乙個成員函式被宣告為虛函式後,其派生類中完全相同的函式(顯示的寫出)也為虛函式。可以在其前加virtual以示清晰。

4,定義乙個指基類物件的指標,並使其指向其子類的物件,通過該指標呼叫虛函式,此時呼叫的就是指標變數指向物件的同名函式。

5,子類中的覆寫的函式,可以為任意訪問型別,依子類需求決定。

C 多型性 什麼是多型

下面舉乙個生活的例子來理解多型。如果要求3種人 孩子,運動員,演奏者都執行乙個動作 play 會發生什麼情況呢?孩子會出去玩耍。運動員會比賽。演員開始演奏。對於同乙個命令,不同的人會有不同的反應,執行不同的動作,這就是生活中乙個多型。在程式設計中,對於同乙個方法,由於執行的物件不同,方法的內容也就不...

C 什麼是多型,多型的用途

qq群 807236138 群稱 ios 技術交流學習群 1 定義 乙個介面,多種方法 程式在執行時才決定呼叫的函式。2.實現 c 多型性主要是通過虛函式實現的,虛函式允許子類重寫override 注意和overload的區別,overload是過載,是允許同名函式的表現,這些函式引數列表 型別不同...

C 多型性 什麼是多型

下面舉乙個生活的例子來理解多型。如果要求3種人 孩子,運動員,演奏者都執行乙個動作 play 會發生什麼情況呢?孩子會出去玩耍。運動員會比賽。演員開始演奏。對於同乙個命令,不同的人會有不同的反應,執行不同的動作,這就是生活中乙個多型。在程式設計中,對於同乙個方法,由於執行的物件不同,方法的內容也就不...