只要是指標,就要符合指標的運算方式,不管你是不是類指標;
如果子類在繼承了父類之後,沒有增加屬性,那麼此時他們的步長一致,如果子類增加了屬性那麼子類的步長將大於父類。
eg:
1 #include2using
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...