C++ 虛函數

#include <iostream>

using namespace std;

class A
{
public:
    virtual void Print()
    {
		cout << "A" << endl;
	}	
};

class B : public A
{
public:
    virtual void Print()
    {
		cout << "B" << endl;
	}	
};

class C : public B
{
public:
    virtual void Print()
	{
		cout << "C" << endl;
	}
};

class D : public A
{
public:
    virtual void Print()
	{
		cout << "D" << endl;
	}
};

int main()
{
	A a;
	B b;
	C c;
	D d;
	A* pa=&a;
	B* pb=&b;
	C* pc=&c;
	D* pd=&d;

    pa->Print(); // A

    pa=pb;
    pa->Print(); // B
	pb->Print(); // B

	pa=pc;
    pa->Print(); // C
	pc->Print(); // C
	
    pa=pd;
    pa->Print(); // D
	pd->Print(); // D
	
	return 0;
}

虛函數用於實現多態,核心理念就是通過基類訪問派生類定義的函數

由於編寫代碼的時候並不能確定被調用的是基類的函數還是哪個派生類的函數,所以被成爲“虛”函數。

虛函數只能藉助於指針或者引用來達到多態的效果。


發佈了94 篇原創文章 · 獲贊 19 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章