當用父類指標或者引用指向子類物件時,可以發生多型(是因為有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...