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

2021-09-07 09:49:29 字數 767 閱讀 3713

只要是指標,就要符合指標的運算方式,不管你是不是類指標;

如果子類在繼承了父類之後,沒有增加屬性,那麼此時他們的步長一致,如果子類增加了屬性那麼子類的步長將大於父類。

eg:

1 #include2

using

namespace

std;34

class

parent

10virtual

void

test()

1114

private:15

inta;

1617

};18

class child1 : public

parent

1925

void test()override

2629

private:30

inta;

31};

3233

34int

main()35;

3738 child1 *c2;

39 parent *p2;

40 c2 =c1;

41 p2 =c1;

42 c2++;

43 p2++;

44 c2->test();

45p2->test();//這句話遮蔽,正常執行,放出來,**執行出錯。就是因為父類步長小,++之後訪問

//子類的屬性,當然出錯

46return0;

47 }

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

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...

父類指標的步長和子類指標的步長是不一樣的

當用父類指標或者引用指向子類物件時,可以發生多型 是因為有vptr指標和虛函式表的存在 但是這個指標和子類指標的步長時不一樣,具體看如下 特別注意看注釋。如下 include using namespace std 結論 多型是用父類指標指向子類物件 和 父類步長 是兩個不同的概念 class pa...

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

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