虛表思考 再探虛表布局

2022-04-20 03:11:24 字數 737 閱讀 5367

思考類的布局,以前一直以為 乙個類可能有多個虛表。

今天下午特別的寫程式測試下。

結論是:無論乙個類怎麼繼承來的,他的虛表只有乙個!//

感覺:注意:虛表的理解,至少2個層次,動靜結合

靜,要知道 類的布局

動,要知道函式 動態繫結

#include

"stdafx.h"

#include

using

namespace

std;

class

base

public

:virtual

void

f()

virtual

void

g()

void

h()

};class

derived:public

base //

使用父親的

virtual

void

g()

void

h()

virtual

void

i()

};void

test_main()

//除錯方法:就是呼叫

test_main()

後面試我的測試截圖:

補上虛表轉換圖示:

虛指標 虛表及記憶體布局

首先要清楚,所謂指標其實質就是乙個記憶體位址值,形如0x12345678 其次,要知道,函式名本身就是乙個位址 虛指標 其實就是乙個位址值,以該位址為起始位址的一片記憶體單元存放著各虛函式的入口位址,這一片記憶體單元合起來就稱為虛函式表 想象一下 一片記憶體單元存著許多函式位址,想執行哪個虛函式就來...

虛函式,虛表,虛表指標

分享一篇文章,詳細解釋了為什麼通過基類指標指向基類物件或派生類物件,就可以呼叫相應類的虛函式。自 一 概述 為了實現c 的多型,c 使用了一種動態繫結的技術。這個技術的核心是虛函式表 下文簡稱虛表 本文介紹虛函式表是如何實現動態繫結的。二 類的虛表 每個包含了虛函式的類都包含乙個虛表。我們知道,當乙...

虛表指標和虛表

父類中有虛函式,父類繼承子類後 1 有各自的虛表指標和虛表 2 對於子類中未被重寫的虛函式,在父子類各自虛表中儲存的函式位址都是父類中的虛函式位址 3 對於子類中被重寫的虛函式,在父子類各自的虛表中儲存的函式位址是不同的 exp1 無覆蓋時 include using namespace std c...