C++中繼承與虛函數


 

一、類與類之間的關系:
1、類與類之間可能會存在共性
2、類與類之間必定會有差異
3、為了節約開發時間和代碼量,我們在設計時可以把類的共項抽象出來形成一個基礎類(基類)
4、使用基類+差異生成一個新的類叫派生類

二、繼承的語法
1、在設計一個類時如果已有的類中有它需要的成員,它可以從已有的類中繼承哪些成員,被繼承的類叫父類或基類,繼承類叫作派生類或子類。
class 類名 : 繼承方式 基類1,繼承方式 基類2,...
{

}

2、子類會完全繼承父類中的所有成員(包括哪些能訪問的和不能訪問的)。

3、類的設計:
a、根據問題找對象
b、把對象中我們需要的屬性和行為抽象出來
c、把抽象出的結果記錄在一個class中形成一個類
d、把class類實例化構造對象
e、對象調用成員函數解決問題
繼承就是在對對象抽象的結果進行歸納總結,找出它們的共性形成基類,再把基類+差異派生出子類

4、繼承的優點:代碼復用
子類在繼承父類后可以節約大量的代碼,節省開發時間、縮短開發周

5、繼承的缺點:
a、繼承會提高類與類之間的耦合度
b、會降低代碼的安全性和可維護性

三、使用繼承要注意的問題
1、繼承雖然可以獲取父類中的所有成員,但子類中可以隱藏父類中的同名成員

2、父子類中不可以形成重載,只有在同一作用域下的同名不同參、const屬性的函數才能形成重載

3、父類中的成員在子類中的訪問屬性
父類中的 public 在子類中 可以訪問
父類中的 protected 在子類中 可以訪問
父類中的 private 在子類中 不可以訪問

4、繼承的方式
不同的繼承方式會影響父類成員變量成子類成員后它們的的訪問屬性,也就是繼承來的成員在類外的訪問屬性
public 不變
protected 共有變保護,其它不變
private 全部變成私有的

四、虛函數
1、子類中會隱藏父類中的同名函數,這種關系叫做隱藏
2、在同一作用域下的同名函數,這種關系叫作重載
3、如果父類中的函數添加 virtual 關鍵字,這種函數就叫作虛函數,子類中會覆蓋父類同名的虛函數
4、虛函數是實現多態的基礎


五、繼承的構造、析構、拷貝
1、在繼承時先調用父類的構造函數,再調用子類的構造函數
2、在繼承中先調用子類的析構,再調用父類的析構
3、在調用拷貝構造時會先調用父類的拷貝構造,在調用子類的拷貝構造
4、在C++中繼承可以有多個父類,在構造時會按繼承表的順序調用父類的構造函數
5、在析構時子類會先調用自己的析構函數,然后再按照繼承表的逆序調用析構函數

 

 



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM