首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 繼承與派生核心概念詳解

     編輯:關於C++

基本定義

  • 基類(父類):被繼承的原有類。
  • 派生類(子類):新產生的類。
  • 繼承:派生類擁有基類特性。
  • 派生:由基類產生派生類的過程(UML 中稱泛化)。

語法

class Derived : inheritance_mode Base1, inheritance_mode Base2 ... {
    // 新增成員
};

繼承與組合的區別

繼承組合
關係一般與特殊(is-a-kind-of)整體與部分(is-a-part-of)
體現派生類擴展基類類包含其他類對象作為成員

繼承方式(三種存取指定符)

  • public:基類 public/protected 成員在派生類保持原存取級別。
  • protected:基類 public/protected 變為派生類 protected。
  • private:基類 public/protected 變為派生類 private。
  • 基類 private 成員在派生類中不可直接訪問(但繼承了佔據內存)。

類型相容性(公有繼承下)

  1. 派生類對象可賦值給基類對象(物件切片,僅複製基類部分)。
  2. 派生類對象可初始化基類引用。
  3. 派生類對象地址可賦給基類指針。

此為多態基礎,支援基類指針/引用操作派生對象。

虛基類

解決菱形繼承重複構造問題:

class Derived : virtual public Base { ... };
  • virtual 僅影響緊隨其後的基類。
  • 虛基類由最底層派生類直接構造,中間派生類不構造虛基類子對象。
  • 確保整個繼承體系中虛基類只有一份子對象。

最佳實踐

  • 優先使用 public 繼承建立 is-a 關係。
  • 組合優於繼承(除非確立 is-a)。
  • 虛構函數配合虛基類使用,確保正確析構。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved