多型是c++的靈魂之處,c++實現多型就是使用vptr指標,實現多型的三個條件,
1. virtual 關鍵字
2. 子類重寫父類的虛函式
3. 父類指標呼叫子類物件虛函式
直接附上** —>發現vptr是儲存在父類中
當a是乙個物件時 輸出的是vptr指標的位址,*(void**)&a 可以簡單的看作把 &a 指向的記憶體空間的內容轉換為 void*。由於vptr指標的型別為 void ** 所以需要寫成這樣才可以列印。
class
c 中的多型和vptr指標
1.多型原理 include include includeusing namespace std 01 多型原理 要有繼承 虛函式重寫 父類指標指向子類物件 class parent virtual void print 動手腳 寫virtual關鍵字,c 編譯器會做特殊處理 virtual vo...
C 多型中的VPTR
以下文字摘錄自 為了完成這件事,編譯器對每個包含虛函式的類建立乙個表 稱為vtable 在vtable中,編譯器旋轉特定類的虛函式位址。在每個帶有虛函式的類中,編譯器 秘密 地置一指標,稱為vpointer 縮寫為vptr 指向這個物件的vtable。通過基類指標 或者引用 做虛函式呼叫時,也就是做...
C 多型中的VPTR
以下文字摘錄自為了完成這件事,編譯器對每個包含虛函式的類建立乙個表 稱為vtable 在vtable中,編譯器旋轉特定類的虛函式位址。在每個帶有虛函式的類中,編譯器 秘密 地置一指標,稱為vpointer 縮寫為vptr 指向這個物件的vtable。通過基類指標 或者引用 做虛函式呼叫時,也就是做多...