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

2021-10-03 08:25:43 字數 747 閱讀 5348

當用父類指標或者引用指向子類物件時,可以發生多型(是因為有vptr指標和虛函式表的存在),但是這個指標和子類指標的步長時不一樣,具體看如下**,特別注意看注釋。

**如下:

#include using namespace std;

//結論:

//多型是用父類指標指向子類物件 和 父類步長++,是兩個不同的概念

class parent

virtual void print()

private:

int a;

};//成功 ,一次偶然的成功 ,必然的失敗更可怕

class child : public parent

virtual void print()

private:

int b;

};void howtoplay(parent* base)

void main()

; pp = array;

pc = array;

pp->print();

pc->print(); //多型發生

pp++;

pc++;

//pp->print(); 執行這句話會報錯,父類指標和子類指標是不一樣的

pc->print(); //多型發生

cout << "hello..." << endl;

system("pause");

return;

}

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

只要是指標,就要符合指標的運算方式,不管你是不是類指標 如果子類在繼承了父類之後,沒有增加屬性,那麼此時他們的步長一致,如果子類增加了屬性那麼子類的步長將大於父類。eg 1 include2 using namespace std 34 class parent 10virtual void tes...

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

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