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

C++ 類的繼承與派生:訪問控制、多重繼承與作用域解析

     編輯:C++ 入門

繼承基本概念

繼承是面向對象核心機制,支持層次分類。派生類獲得基類非私有成員,可添加新成員實現「具體化」或「延續化」。

三種繼承方式對比

基類成員public 繼承protected 繼承private 繼承
publicpublicprotectedprivate
protectedprotectedprotectedprivate
private不可見不可見不可見
  • 公有繼承:is-a 關係,保持接口公開,最常用。
  • 保護繼承:基類接口在派生類內部可用,外部不可見。
  • 私有繼承:實現細節復用,接口完全隱藏,類似組合。

派生類對基類成員的訪問

  • 派生類**成員函數**可訪問基類 `public`/`protected` 成員。
  • 派生類**對象**(外部代碼)僅能訪問基類 `public` 成員(且僅在公有繼承下)。
  • 基類 `private` 成員在派生類中**不可見**,但佔據內存空間。

多重繼承與作用域解析

若多個基類有同名成員,派生類繼承多份。需用作用域解析符 `基類名::成員名` 區分:


派生類構造與析構順序

  1. 構造:基類構造(按繼承聲明順序)→ 成員對象構造(按聲明順序)→ 派生類構造函數體。
  2. 析構:順序完全相反。
  3. 虛繼承時,虛基類由**最派生類**構造,且只構造一次。

虛函數與多態

  • 基類聲明 `virtual`,派生類覆蓋實現動態綁定。
  • 純虛函數 `=0` 使類成為抽象類,不可實例化。
  • 虛析構函數**必須**聲明為 `virtual`,確保刪除基類指針時正確調用派生類析構函數。

最佳實踐

  1. 優先使用公有繼承表達 is-a;私有繼承/組合表達 has-a/implemented-in-terms-of。
  2. 避免深層繼承樹,組合優於繼承。
  3. 多重繼承謹慎使用,注意菱形繼承需虛繼承解決。
  4. 基類析構函數永遠聲明 `virtual`。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved