C 學習Day24z之多型

2021-08-18 07:49:55 字數 1701 閱讀 3772

#includeusing namespace std;

/*c++中所謂的多型(polymorphism)是指,由繼承而產生的相關的不同的類,其物件對同一訊息會作出不同的相應

* 多型性是物件導向程式設計的乙個重要特性,能增加程式的靈活性,可以減輕系統公升級,維護除錯的工作量和複雜度。*/

/*多型實現的前提是賦值相容。

* 賦值相容規則是指在需要基類物件的任何地方都可以使用公有派生類的物件來代替,賦值相容是一種預設行為,不需要任何的顯示的轉化步驟。*/

/*派生類的物件可以賦值給基類物件

* 派生類的物件可以初始化基類的引用

* 派生類物件的位址可以賦值給基類的指標*/

class shape

void draw()

#includeusing namespace std;

/* *多型

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

*動多型,是在執行時決定的。

*動多型形成的條件有3個

*1.父類當中有虛函式,宣告虛函式的方法就是在函式前面加個virtual,但是當實現和宣告分開的時候,實現的時候不用加virtual。

*2.子類當中覆寫(override)了父類的虛函式

1.覆寫的虛函式要求函式名,返回值型別,函式引數個數以及型別全部匹配

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

*3.將子類物件位址賦給了父類的指標,並發生虛函式呼叫。

*/class shape

virtual void draw()

#if 0

這裡c覆寫了b的,但是b裡面什麼都沒有,但是由於繼承的方式也可以覆寫

class a

}class b:public a

class c:public b

}#endif #includeusing namespace std;

/* *多型

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

*動多型,是在執行時決定的。

*動多型形成的條件有3個

*1.父類當中有虛函式,宣告虛函式的方法就是在函式前面加個virtual,但是當實現和宣告分開的時候,實現的時候不用加virtual。

*2.子類當中覆寫(override)了父類的虛函式

1.覆寫的虛函式要求函式名,返回值型別,函式引數個數以及型別全部匹配

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

*3.將子類物件位址賦給了父類的指標,並發生虛函式呼叫。

*/class shape

virtual void draw()

#if 0

這裡c覆寫了b的,但是b裡面什麼都沒有,但是由於繼承的方式也可以覆寫

class a

}class b:public a

class c:public b

}#endif

#includeusing namespace std;

#if 0

純虛函式 格式

class 類名

#endif

class shape

C 學習之多型

多型性是物件導向程式設計中的乙個重要特徵,利用多型性可以設計和實現乙個易於拓展的系統。在c 語言中,多型性是指具有不同功能的函式可以用同乙個函式名,這樣就可以用乙個函式名呼叫不同內容的函式,發出同樣的訊息被不同型別的物件接收時,導致完全不同的行為。多型性通過聯編實現。聯編是指乙個電腦程式自身彼此關聯...

C 學習之多型

c 的類機制中有支援多型的技術來解決抽象程式設計,它用的是一種滯後 技術,這種技術,通過預先設定其成員函式的虛函式性質,使得任何 該成員函式的未定型別的物件操作在編譯時,都以乙個不確定的指標特殊地 引命代發 來編碼,到了執行時,遇到確定型別的物件,才突然制定其真正的行為。即滯後到執行時,根據具體型別...

c 學習之多型

多型分為兩類 1 靜態多型 函式過載和運算子過載屬於靜態多型,復用函式名 2 動態多型 派生類和虛函式實現執行時多型 靜態多型和動態多型的區別 1 靜態多型的函式位址早繫結 編譯階段確定函式位址 2 動態多型的函式位址晚繫結 執行階段確定函式位址 動態多型滿足條件 1 有繼承關係 2 子類重寫父類的...