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

C++ 靜態綁定與動態綁定概述

     編輯:關於C++

定義

  • 靜態類型:宣告時的類型(編譯期已知)。
  • 動態類型:指標/參考實際指向的物件類型(執行期決定)。
  • 靜態綁定:根據靜態類型解析函式/屬性(編譯期)。非虛擬函式、多載解析、模板實例化。
  • 動態綁定:根據動態類型解析虛擬函式(執行期)。需虛擬函式 + 基類別指標/參考。

程式碼示範

class A { public: /*virtual*/ void func() { cout << "A::func\n"; } };
class B : public A { public: void func() { cout << "B::func\n"; } };
class C : public A { public: void func() { cout << "C::func\n"; } };

int main() {
    A* pa = new B;
    pa->func(); // 無 virtual:靜態綁定呼叫 A::func
                // 有 virtual:動態綁定呼叫 B::func
}

關鍵差異

特性靜態綁定動態綁定
解析時機編譯期執行期
依據靜態類型動態類型
函式類型非虛擬、模板、多載虛擬函式
效能較快(直接呼叫/內聯)稍慢(虛擬表查找)
彈性低高(多態)

最佳實務

  • 預設非虛擬,需要多態時才加 virtual。
  • 基類別解構函式必須為虛擬。
  • 使用 final、override 明確意圖並獲編譯器檢查。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved