父類指標向子類指標的強制型別轉換

2021-06-22 23:39:53 字數 822 閱讀 7570

結論:

定義乙個父類物件,將該父類物件的指標強制型別轉換為子類指標,並賦給乙個子類指標,則:該子類指標將指向該父類物件,但是其this指標仍然是指向子類的指標。

當該指標呼叫虛成員函式時,將按照物件的記憶體布局(指向虛函式表的指標儲存在該物件的前四個位元組)呼叫父類虛成員函式。

當該指標呼叫普通成員函式時,將通過this指標呼叫位於**段的該子類的成員函式。

例1、非虛成員函式

typedef void(*fun)(void);

class base

void fun()

輸出:

由輸出"it is derived's this"可以判斷:d仍為指向子類的指標。

由輸出「1「可以判斷:d指向的物件仍為父類物件b。

例2、虛成員函式

typedef void(*fun)(void);

class base

virtual void fun()

輸出

由輸出"it is derived's this"可以判斷:d仍為指向子類的指標。

由輸出" base's funciton"可以判斷:f1指向父類虛函式表的第乙個函式,d指向的物件仍為父類物件b5。

由輸出「1「可以判斷:d指向的物件仍為父類物件b。

父類指標和子類指標的步長

include stdafx.h include using namespace std class father virtual void print private int a class son public father virtual void print intmain int i fo...

子類指標不能轉換為父類指標???

vtkstructuredpoints是vtkimagedata的子類,為何會有上述錯誤?原來是沒有 include vtkstructuredpoints.h 子類的標頭檔案 因為沒有這個標頭檔案,編譯器根本不知道這兩個類之間有繼承關係。include vtkactor.h include vtk...

c 父類指標指向子類物件

父類子類指標函式呼叫注意事項 1,如果以乙個基礎類指標指向乙個衍生類物件 派生類物件 那麼經由該指標只能訪問基礎類定義的函式 靜態聯翩 2,如果以乙個衍生類指標指向乙個基礎類物件,必須先做強制轉型動作 explicit cast 這種做法很危險,也不符合生活習慣,在程式設計上也會給程式設計師帶來困擾...