從類記憶體看虛表

2021-08-18 08:12:06 字數 1164 閱讀 9985

結合文章看

情形一:單繼承,派生類中只有乙個虛表

#include "stdafx.h"

using namespace std;

#include // 基類a

單繼承中我們可以看出,派生類中只有乙個虛表,是從基類繼承過來的虛表,基類的虛表裡的內容先儲存到虛表中,接著如果派生類重寫了基類的虛函式則重新覆蓋更新基類的虛表內容,最後再虛表後面新增派生類新增的虛函式。

情形二:多繼承,派生類中有多張虛表

#include "stdafx.h"

using namespace std;

#include // 基類a

多繼承中可以看出,派生類繼承了兩個基類的虛表指標和虛表,基類的虛表裡的內容先儲存到虛表中,接著如果派生類重寫了基類的虛函式則重新覆蓋更新基類的虛表內容,最後再在第一張虛表虛表c::$vftable@a@後面新增派生類新增的虛函式qux()。

從記憶體布局看C 虛繼承的實現原理

今天講的是虛基類和虛繼承,我們就先用上面介紹的命令提示工具檢視一下普通多繼承子類的記憶體布局,可以跟後文虛繼承子類的記憶體布局情況加以比較。我們新建乙個名叫normalinheritance的cpp檔案,輸入一下內容。普通繼承 沒有使用虛基類 基類a class a class b public a...

從類的記憶體結構看C 繼承

先看下面這個簡單的例子,我們建立乙個基類 base class 通過簡單的繼承 inherit 產生兩個派生類 derived class 然後通過乙個基類的指標去呼叫這兩個派生類,並且呼叫類中的函式。class base void show2 class derived1 public base ...

我從內部看記憶體

1.記憶體分類 記憶體由於具備訪問速度快,訪問方式簡單等優點,成為了c或者是嵌入式硬體平台上不可或缺的元件。在開始學習如何使用記憶體之前,非常有必要先了解一下記憶體的分類 dram 它的基本原件是小電容,電容可以在兩個極板上保留電荷,但是需要定期的充電 重新整理 否則資料會丟失。缺點 由於要定期重新...