c++ 純虛函數和虛函數重寫調用

純虛函數和虛函數重寫調用

 

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 時調用的 是子類的方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章