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

C++ 學習筆記(四):虛函數與多態機制深度解析

     編輯:關於C++

多態:面向對象三大支柱之一

與封裝、繼承並列,多態指同一消息(函數調用)被不同對象接收時產生不同行為。

1. 靜態聯編 vs 動態聯編

  • 靜態聯編(編譯期):函數重載、模板實例化、普通函數調用。調用關係編譯期固定。
  • 動態聯編(運行期):通過虛函數實現,根據對象實際類型決定調用哪個覆寫版本。

2. 多態分類

  • 編譯時多態(靜態):函數重載、運算符重載、模板。
  • 運行時多態(動態):虛函數 + 基類指針/引用指向派生對象。

3. 虛函數

聲明

class Base {
    virtual 返回類型 FuncName(參數列表);
};
  • 派生類中同名同參函數自動成為虛函數(建議加 override)。
  • 構造函數、靜態成員函數、全局函數不能為虛函數。
  • 析構函數應聲明為虛函數,確保正確析構派生對象。

動態聯編條件

  1. 基類指針/引用指向派生對象。
  2. 調用的是虛函數。

4. 基類指針指向派生對象

基類指針僅能訪問派生對象中的基類部分,但調用虛函數時觸發動態聯編。

5. 純虛函數與抽象類

純虛函數

virtual 返回類型 FuncName(參數列表) = 0;
  • 無函數體,強制派生類實現。

抽象類

  • 包含至少一個純虛函數的類。
  • 只能作基類,不能實例化對象。
  • 作為接口規範,具體實現延遲到派生類。

相關文章


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved