C++学习——继承
文章目錄
- 1.C++中類成員的訪問權限和繼承權限問題
- 2.多繼承的優(yōu)缺點
- 3. 繼承機制中對象之間如何轉換
- 4.組合與繼承優(yōu)缺點
1.C++中類成員的訪問權限和繼承權限問題
2.多繼承的優(yōu)缺點
C++允許為一個派生類指定多個基類,這樣的繼承結構被稱做多重繼承。
多重繼承的優(yōu)點很明顯,就是對象可以調用多個基類中的接口;
如果派生類所繼承的多個基類有相同的基類,而派生類對象需要調用這個祖先類的接口方法,就會容易出現二義性
加上全局符確定調用哪一份拷貝。比如pa.Author::eat()調用屬于Author的拷貝。
使用虛擬繼承,使得多重繼承類Programmer_Author只擁有Person類的一份拷貝。
3. 繼承機制中對象之間如何轉換
向上類型轉換
將派生類指針或引用轉換為基類的指針或引用被稱為向上類型轉換,向上類型轉換會自動進行,而且向上類型轉換是安全的。
向下類型轉換
將基類指針或引用轉換為派生類指針或引用被稱為向下類型轉換,向下類型轉換不會自動進行,因為一個基類對應幾個派生類,所以向下類型轉換時不知道對應哪個派生類,所以在向下類型轉換時必須加動態(tài)類型識別技術。RTTI技術,用dynamic_cast進行向下類型轉換。
4.組合與繼承優(yōu)缺點
繼承是Is a 的關系,比如說Student繼承Person,則說明Student is a Person。繼承的優(yōu)點是子類可以重寫父類的方法來方便地實現對父類的擴展。
繼承的缺點有以下幾點:
①:父類的內部細節(jié)對子類是可見的。
②:子類從父類繼承的方法在編譯時就確定下來了,所以無法在運行期間改變從父類繼承的方法的行為。
③:如果對父類的方法做了修改的話(比如增加了一個參數),則子類的方法必須做出相應的修改。所以說子類與父類是一種高耦合,違背了面向對象思想。
組合也就是設計類的時候把要組合的類的對象加入到該類中作為自己的成員變量。
組合的優(yōu)點:
①:當前對象只能通過所包含的那個對象去調用其方法,所以所包含的對象的內部細節(jié)對當前對象時不可見的。
②:當前對象與包含的對象是一個低耦合關系,如果修改包含對象的類中代碼不需要修改當前對象類的代碼。
③:當前對象可以在運行時動態(tài)的綁定所包含的對象。可以通過set方法給所包含對象賦值。
組合的缺點:①:容易產生過多的對象。②:為了能組合多個對象,必須仔細對接口進行定義。
總結
- 上一篇: Windows 7硬盘安装方法大全
- 下一篇: C++学习——模板