繼承允許基於現有類(基類/父類)定義新類(派生類/子類),擴展或限制功能,實現代碼復用。
class Derived : 訪問方式 Base {
// 新成員
};
class Derived : 訪問方式 Base1, 訪問方式 Base2, ... {
// 新成員
};
| 繼承方式 | 基類 public | 基類 protected | 基類 private |
|---|---|---|---|
| public(公有繼承) | public | protected | 不可訪問 |
| protected(保護繼承) | protected | protected | 不可訪問 |
| private(私有繼承) | private | private | 不可訪問 |
private 繼承。Derived::Derived(參數列表) : Base(基類參數) {
// 派生類初始化
}
Derived::Derived(參數列表) : Base1(參數1), Base2(參數2) {
// 參數列表需滿足所有基類初始化需求
}
析構順序完全相反:派生類析構 → 成員對象析構 → 基類析構(右→左)。
多重繼承中,多個直接基類共同繼承自同一間接基類 → 派生對象包含多份間接基類副本 → 訪問二義性。
Base1::member、Base2::member。class Derived : virtual 訪問方式 Base。派生類只保留一份虛基類子對象。