C++基礎之繼承類和派生類


(1)繼承是創建一個具有某個類的屬性和行為的新類的能力。原有的類稱為基類,新創建的類稱為派生類。派生類將基類中的所有成員作為自己的成員,同時派生類本身可以定義新的成員
(2)派生類只有一個基類的繼承稱單重繼承,簡稱單繼承。派生類具有兩個或兩個以上的基類的繼承稱為多重繼承,簡稱多繼承。C++語言支持單繼承,又支多繼承
(3)派生類有3種繼承方式:公有繼承( public)、私有繼承( private)和保護繼承( protected)。不同的繼承方法中,基類成員在派生類中的訪問權限是不同的。3種繼承方式中,基類的私有成員在派生類中都是不可見的。公有繼承時,基類中公有成員和保護成員在派生類中仍然是公有成員和保護成員;私有繼承時,基類中公有成員和保護成員在派生類中都是私有成員;保護繼承時,基類中公有成員和保護成員在派生類中都是保護成員
(4)構造函數不能夠繼承。因此,派生類的構造函數必須通過調用基類的構造函數來初始化基類的對象。派生類構造函數格式如下
<派生類名>(<派生類構造函數總參數表>):<基類構造函數名>(<參數表1>),…,<子對象名>(<參數表n>)
{
<派生類中數據成員初始化>
}
其中,<派生類名>即為派生類的構造函數名
派生類的構造函數中應包含基類構造函數,子對象類構造函數以及派生類本身構造函數
如果派生類中有默認構造函數,則該默認構造函數將自動包含有基類的默認構造函數
(5)一個特定的類型,當且僅當它至少提供了另一個類型的行為時,則稱該類型是另個類型的子類型。這是類型之間的特殊和一般的關系。在公有繼承方式下,派生類是基類的子類型,反之不然
6)賦值兼容規則如下
①派生類對象可以賦給基類對象;
②派生類對象可以初始化基類對象的引用;
派生類對象的地址值可賦給指向基類對象的指針。
上述規則的基礎是派生類是基類的子類型。
(7)多繼承的構造函數的成員初始值表中要包含多個基類的構造函數。對多個基類的構造函數的執行順序取決於定義多繼承時,派生類名后面給定的多個基類名的順序
(8)多繼承通常會在下述兩種情況下出現二義性:
①訪問不同基類中的相同成員時,可能出現二義性
②訪問共同基類中的成員時,可能出現二義性。
避免二義性的方法通常使用成員名限定法。
(9)虛基類是消除公共基類引起二義性的最好方法。說明虛基類的關鍵字是virtual
其格式如下
class<派生類名>: virtual<繼承方式><基類名>
(10)虛基類的間接派生類的構造函數的成員初始值表中要含有公共基類的構造函數,這時虛基類構造函數優先執行,並且僅被執行一次

(11)當對象被刪除時,派生類的析構函數被執行,由於析構函數也不能被繼承,先執行派生類的析構函數,在執行基類的析構函數,順序與執行構造函數相反


免責聲明!

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



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