純虛函數和虛函數重寫調用
class parent
{
public:
parent(int a, int b)
{
this->a = a;
this->b = b;
cout << "我是爸爸構造函數" << endl;
}
void printfP()
{
dotest();
}
virtual void dotest()
{
cout << "parent:dotest()" << endl;
}
~parent()
{
cout << "我是爸爸析構函數" << endl;
}
private:
int a;
int b;
};
class child :public parent
{
public:
child(int a, int b, int c) :parent(a, b)
{
this->c = c;
cout << "我是兒子構造函數" << endl;
}
~child()
{
cout << "我是兒子析構函數" << endl;
}
virtual void dotest()
{
cout << "child:dotest()" << endl;
}
private:
int c;
};
//在子類對象構造時,需要調用父類構造函數對其繼承得來的成員進行初始化
//在系類對象析構時,需要調用父類析構函數對其繼承得來的成員進行處理
//先調用父類構造函數 再調用子類構造函數
void objplay()
{
child c(1, 2, 3);
c.printfP();
}
void main()
{
objplay();
getchar();
}
基類的printfP函數此時調用的dotext 是子類重寫的方法,其實每個函數裏面隱藏一個this指針的,由於創建了子類child的實例,this就是子類的指針1,當誰調用了改該方法,傳遞的this就是該對象的,顧名思義 child c(1, 2, 3); c.printfP(); dotext 時調用的 是子類的方法