C++:多態專題

多態的實現主要是通過純虛函數實現。

1.含有純虛函數的類,稱爲抽象基類,不可實列化。即不能創建對象,存在的意義就是被繼承,提供族類的公共接口,java 中稱爲 interface。
2. 純虛函數只有聲明,沒有實現,被“初始化”爲 0。
3. 如果一個類中聲明瞭純虛函數,而在派生類中沒有對該函數定義,則該虛函數在派生類中仍然爲純虛函數,派生類仍然爲純虛基類

含有虛函數的析構
含有虛函數的類,析構函數也應該聲明爲虛函數。在 delete 父類指針的時候,會調用子類的析構函數,實現完整析構
就是指作爲接口的抽象類要定義虛析構函數

3.多態實現的前提是賦值兼容:
派生類的對象可以賦值給基類對象。
派生類的對象可以初始化基類的引用。
派生類對象的地址可以賦給指向基類的指針。

多態實現的條件:
父類中有虛函數。
子類 override(覆寫)父類中的虛函數。

父類指針指向子類對象,並調用函數接口

4.類 A 直接依賴類 B,假如要將類 A 改爲依賴類 C,則必須通過修改類 A 的代碼來達成。這種場景下,類 A 一般是高層模塊,負責複雜的業務邏輯;類 B 和類 C 是低層模塊,負責基本的原子操作;假如修改類 A,會給程序帶來不必要的風險。
解決方案:將類 A 修改爲依賴接口 I,類 B 和類 C 各自實現接口 I,類 A 通過接口 I 間接與類 B 或者類 C 發生聯繫,則會大大降低修改類 A 的機率
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章