《C++反彙編與逆向分析技術揭祕》讀書總結——從記憶體角度看繼承
子類具備父類的所有成員資料和成員函式。在父類中宣告為私有(private)的成員,雖然子類物件無法直接訪問,但是在子類物件的記憶體結構中,父類私有的成員資料依然存在。C++語法規定的訪問控制許可權僅限於編譯層面,由編譯器進行語法檢查。
子類物件在記憶體中的資料排列為:先安排父類的資料,後安排子類新定義的資料。記憶體結構等價於如下程式碼形式:
class CBase{...}; //父類定義程式碼略
class CDerive
{
public:
CBase m_Base; //原來的父類CBase成為成員物件
int m_nDerive; //原來的子類派生資料
}
1、如果子類沒有建構函式或解構函式,而其父類卻需要建構函式與解構函式時,編譯器會為該父類的子類提供預設的建構函式與解構函式,從而呼叫成員物件(指等價程式碼中的CBase類物件)的建構函式。
2、如果子類含有建構函式,而父類不存在建構函式,則分兩種情況:如果父類中沒有虛擬函式,也不存在構造祖先類的問題,則編譯器不會為父類提供預設的建構函式,因為沒有意義;如果父類含有虛擬函式,此時父類需要初始化虛表工作,因此編譯器會為其提供預設的建構函式,以初始化虛標指標。
未完待續
本文是對原著的總結,非我原創,詳情求購買原著。
相關文章
- c++ 記憶體 繼承C++記憶體繼承
- c++菱形繼承、多型與類記憶體模型C++繼承多型記憶體模型
- 從記憶體角度深入看結構體(window/linux)大小記憶體結構體Linux
- 遊戲反外掛技術揭祕遊戲
- 【技術推薦】正向角度看Go逆向Go
- C++ 繼承中的記憶體佈局C++繼承記憶體
- C++ 虛繼承 物件記憶體佈局C++繼承物件記憶體
- 《CSS揭祕》讀書筆記CSS筆記
- 《SIP揭祕》讀書筆記筆記
- 基於VC平臺下C++反彙編與逆向分析研究——No.1C++
- 《揭祕跨境電商》讀書筆記筆記
- 從C++看C#託管記憶體與非託管記憶體C++C#記憶體
- 記憶體池原理大揭祕記憶體
- Wireshark分析藝術【讀書總結】
- 數字媒體技術揭祕(續)——壓縮編碼
- 從JVM設計角度解讀Java記憶體模型JVMJava記憶體模型
- Java核心技術筆記 繼承Java筆記繼承
- 多重繼承及虛繼承中物件記憶體的分佈繼承物件記憶體
- 終、《圖解HTTP》讀書筆記 - 彙總篇(總結)圖解HTTP筆記
- 《深度探索c++記憶體模型》讀書筆記 (二)C++記憶體模型筆記
- 從技術人員角度看Google chrome薦GoChrome
- C++ 記憶體分佈之菱形繼承(無虛擬函式)C++記憶體繼承函式
- JavaScript繼承總結JavaScript繼承
- C++繼承體系C++繼承
- 逆向之彙編筆記筆記
- C++虛繼承原理與類佈局分析C++繼承
- 駭客技術精品圖書彙總
- 從彙編角度分析C語言的過程呼叫C語言
- JavaScript原型與繼承的祕密JavaScript原型繼承
- 從 CPU 角度理解 Go 中的結構體記憶體對齊Go結構體記憶體
- JVM讀書筆記之java記憶體結構JVM筆記Java記憶體
- 華章揭祕系列精品圖書(《Android應用開發揭祕》、《GWT揭祕》、《Spring技術內幕》)AndroidSpring
- 從技術角度分析“搶票軟體的加速”有多快?
- 《JavaScript 高階程式設計》 讀書筆記--從原型鏈複習繼承JavaScript程式設計筆記原型繼承
- 從prototype與__proto__窺探JS繼承之源 | 掘金技術徵文JS繼承
- 從 MMU 看記憶體管理記憶體
- maven 學習總結(五)——聚合與繼承Maven繼承
- Java 反彙編、反編譯、volitale解讀Java編譯