c++虛函數實現動態綁定

c++規定 函數動態綁定 需要使用虛函數來實現。 具體的實現方法是:動態聯編 使用對象的引用或對象的指針 來操作 虛函數,  但是如果使用對象 來操作虛函數的話,仍然會採用靜態聯編的方式。

#include<iostream>
using namespace std;
class A
{

public:
	virtual void printA()
	{
		cout<<"A:printA()"<<endl;
	}
};
class B :public A
{
public :
	virtual  void printA()
	{
		cout<<"B:printA()"<<endl;
	}
};
void printAB(A &aa)
{
	aa.printA();
}
int main()
{
    A a= A();
    B b= B();
    A *pab=b;//pab 表示是一個指針 是A 類型的 但是指向了B類對象
   // B *pba=a;  如果不註釋起來 會報錯 ,因爲只可以用父類的指針 指向子類的對象;而子類的                  //  指針不可以指向父類的對象
    
    pab->printA();//通過對象的指針 來使用 虛函數,實現動態聯編,結果會是 B:printA()
    //也可以使用 引用來對操作
     
     A &aa = b;
     printAB(aa);//效果與 aa.printA() 一樣 都是 執行了 B:printA(); 
    
    return 0;
}



其實 之所以會有 動態聯編這種模式的出現  ,就是因爲 項目經理 會定義出 父類的操作,而員工 需要實現出 具體的 子類中與父類中對應的操作的實現, 而並不需要使用父類的操作, 所以動態聯編的結果 基本上都是 使用 父類的指針或者引用 來指向或者引用 子類的對象,從而達到 實現子類操作的目的。

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