《C++反彙編與逆向分析技術揭祕》讀書總結——從記憶體角度看繼承
子類具備父類的所有成員資料和成員函式。在父類中宣告為私有(private)的成員,雖然子類物件無法直接訪問,但是在子類物件的記憶體結構中,父類私有的成員資料依然存在。C++語法規定的訪問控制許可權僅限於編譯層面,由編譯器進行語法檢查。
子類物件在記憶體中的資料排列為:先安排父類的資料,後安排子類新定義的資料。記憶體結構等價於如下程式碼形式:
class CBase{...}; //父類定義程式碼略
class CDerive
{
public:
CBase m_Base; //原來的父類CBase成為成員物件
int m_nDerive; //原來的子類派生資料
}
1、如果子類沒有建構函式或解構函式,而其父類卻需要建構函式與解構函式時,編譯器會為該父類的子類提供預設的建構函式與解構函式,從而呼叫成員物件(指等價程式碼中的CBase類物件)的建構函式。
2、如果子類含有建構函式,而父類不存在建構函式,則分兩種情況:如果父類中沒有虛擬函式,也不存在構造祖先類的問題,則編譯器不會為父類提供預設的建構函式,因為沒有意義;如果父類含有虛擬函式,此時父類需要初始化虛表工作,因此編譯器會為其提供預設的建構函式,以初始化虛標指標。
未完待續
本文是對原著的總結,非我原創,詳情求購買原著。
相關文章
- c++菱形繼承、多型與類記憶體模型C++繼承多型記憶體模型
- C++ 虛繼承 物件記憶體佈局C++繼承物件記憶體
- 【技術推薦】正向角度看Go逆向Go
- 《CSS揭祕》讀書筆記CSS筆記
- 遊戲反外掛技術揭祕遊戲
- 從C++看C#託管記憶體與非託管記憶體C++C#記憶體
- 記憶體技術詞彙表記憶體
- 記憶體池原理大揭祕記憶體
- 《揭祕跨境電商》讀書筆記筆記
- Wireshark分析藝術【讀書總結】
- 從JVM設計角度解讀Java記憶體模型JVMJava記憶體模型
- Java核心技術筆記 繼承Java筆記繼承
- 終、《圖解HTTP》讀書筆記 - 彙總篇(總結)圖解HTTP筆記
- 《深度探索c++記憶體模型》讀書筆記 (二)C++記憶體模型筆記
- C++繼承體系C++繼承
- JavaScript繼承總結JavaScript繼承
- C++虛繼承原理與類佈局分析C++繼承
- 逆向之彙編筆記筆記
- JVM讀書筆記之java記憶體結構JVM筆記Java記憶體
- Java 反彙編、反編譯、volitale解讀Java編譯
- 從 CPU 角度理解 Go 中的結構體記憶體對齊Go結構體記憶體
- 《JavaScript 高階程式設計》 讀書筆記--從原型鏈複習繼承JavaScript程式設計筆記原型繼承
- 從技術角度分析“搶票軟體的加速”有多快?
- JavaScript原型與繼承的祕密JavaScript原型繼承
- 從 MMU 看記憶體管理記憶體
- C++學習筆記——C++ 繼承C++筆記繼承
- 揭開java記憶體模型的神祕面紗Java記憶體模型
- iOS彙編教程(六)CPU 指令重排與記憶體屏障iOS記憶體
- JVM讀書筆記之垃圾收集與記憶體分配JVM筆記記憶體
- PingCode 技術架構揭祕GC架構
- x64dbg(程式逆向反彙編修改神器)
- JS中繼承方式總結JS中繼繼承
- C++繼承C++繼承
- 垃圾回收與記憶體分配——總結篇記憶體
- iOS逆向學習筆記 - 彙編(一) - 初識彙編iOS筆記
- 從萌新的角度理解JVM記憶體管理JVM記憶體
- io記憶體,io埠,彙編 in out 指令記憶體
- Redis的過期策略和記憶體淘汰策略最全總結與分析Redis記憶體