輔助工具,vptr vtbl建立時機

2021-10-05 07:56:32 字數 2264 閱讀 4631

// project100.cpp : 此檔案包含 "main" 函式。程式執行將在此處開始並結束。

//#include

"pch.h"

#include

using

namespace std;

//基類1

class

base1

virtual

voidg(

)};//基類2

class

base2

virtual

voidi(

)};//子類

class

derived

:public base1,

public base2

virtual

voidi(

)//覆蓋父類2的虛函式

//如下三個我們自己的虛函式

virtual

voidmh(

)virtual

voidmi(

)virtual

voidmj(

)};int

main()

func f2 =

(func)vptr1[1]

;//0x00ab15f0

func f3 =

(func)vptr1[2]

;//0x00ab15cd

func f4 =

(func)vptr1[3]

;//0x00ab15ff

func f5 =

(func)vptr1[4]

;//0x00ab15eb

func f6 =

(func)vptr1[5]

;//非正常

func f7 =

(func)vptr1[6]

; func f8 =

(func)vptr1[7]

; func f11 =

(func)vptr2[0]

;//0x00ab15af

func f22 =

(func)vptr2[1]

;//0x00ab15b9

func f33 =

(func)vptr2[2]

;//非正常

func f44 =

(func)vptr2[3]

; b1.f(

);b2.i(

);d.f()

; d.i(

);d.mh()

; d.g(

);//----------------

cout <<

"-----------------"

<< endl;f1(

);f2(

);f3(

);f4(

);f5(

);cout <<

"-------------"

<< endl;

f11();

f22();

//第五節 輔助工具,vptr、vtbl建立時機

// cl /d1 reportsingleclasslayoutderived project100.cpp

// g++ -fdump-class-hierarchy -fsyntax-only 3_4.cpp

//vptr(虛函式表指標)什麼時候建立出來的?

//vptr跟著物件走,所以物件什麼時候建立出來,vptr就什麼時候建立出來。執行的時候;

//實際上,對於這種有虛函式的類,在編譯的時候,編譯器會往相關的建構函式中增加

//為vptr賦值的**,這是在編譯期間編譯器為建構函式增加的。

//這屬於編譯器默默為我們做的事,我們並不清楚。

//當程式執行的時候,遇到建立物件的**,執行物件的建構函式,那麼這個建構函式裡有

//給物件的vptr(成員變數)賦值的語句,自然這個物件的vptr就被賦值了;

//虛函式表是什麼時候建立的?

//實際上,虛函式表是編譯器在編譯期間(不是執行期間)就為每個類確定好了對應的虛函式表vtbl的內容。

//然後也是在編譯器期間在相應的類建構函式中新增給vptr賦值的**,這樣程式執行的時候,

//當執行到成成類物件的**時,會呼叫類的建構函式,執行到類的構造

//函式中的 給vptr賦值的**,這樣這個類物件的vptr(虛函式表指標)就有值了;

NK bin 輔助工具

有時候需要簡單的檢視一下nk.bin ce rom 中的檔案,就需要小工具,這些工具在wince sdk中有很多,下面簡單介紹幾個 viewbin.exe 顯示bin檔案中的內容 displays information about the contents of a run time image....

LINQ to SQL 輔助工具

當你在專案中使用linq to sql的時候,有乙個事情是必須要非常注意的,那就是要關心一下linq to sql幫你生成的sql語句,尤其在你還不是非常熟悉linq to sql的語法,api的時候,這點是非常重要的。一 datacontext本身有提供log屬性來將linq to sql生成的s...

JUC 輔助工具類

countdownlatch 假設這樣的乙個場景 你是圖書館管理員 現在還有五個人在圖書館中怎麼保證五個人都走完的時候進行鎖門 cyclicbarrier 鎖完門 下了班 你邀請一些朋友一起吃飯 有人提早就到 有人會準點到只有人齊了才開始吃飯 cyclicbarrier 和 countdownlat...