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

C++ 物件模型讀書筆記:佈局、虛函數、繼承與建構函數語意

     編輯:VC 教學

核心概念

  1. C++ 物件模型:語言直接支援 OO 的部分 + 實現機制
  2. C 與 C++ 差異:C 面向過程,數據與函數分離;C++ 以 ADT 封裝數據與操作
  3. 額外負擔來源:虛函數機制、虛基類(多重繼承共享單一實體)

成員佈局規則

  • nonstatic 數據成員 → 類物件內部
  • static 數據成員 → 所有物件外部(data segment)
  • static/nonstatic 函數 → 類物件外部
  • virtual 函數 → 每類一張虛表,物件含 vptr 指向虛表

關鍵機制

  1. 虛繼承:基類在繼承鏈中無論派生幾次,僅存在一個實體
  2. struct vs class:語義差異(資料萃取 vs ADT),編譯層面無別
  3. 三大程式設計範式:過程式、ADT、OO
  4. 指針本質:大小固定,類型僅告知編譯器如何解讀所指記憶體
  5. 物件切割:派生類賦值給基類時,派生部分被切除

建構函數語意

  • 無用戶定義建構函數 → 編譯器合成預設建構函數(僅初始化基類與成員物件,不初始化非靜態數據)
  • 內聯函數有靜態連結,過複雜會合成非內聯實體
  • 含類物件成員 → 建構函數自動調用各成員建構函數
  • 拷貝建構函數:預設逐位元拷貝,用戶可自定義
  • 成員初始化列表:按成員宣告順序初始化,編譯器置於用戶代碼前

類大小影響因素

  1. 語言額外負擔(vptr 等)
  2. 編譯器優化(空類佔 1 byte 確保唯一位址)
  3. 對齊限制(32 位機通常 4 byte 對齊)

靜態數據成員無論多少物件僅一份實體。

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