C++之虛函數作用初步認識

虛函數可以讓成員操作一般化

看一段代碼:

#include<iostream>
using namespace std;
class B0{
    public:
        void display(){cout<<"B0::display()"<<endl;}
};
class B1:public B0{
    public:
        void display(){cout<<"B1::display()"<<endl;}
};
class D1:public B1{
    public:
        void display(){cout<<"D1::display()"<<endl;}
};
void fun(B0 *ptr){ptr->display();}
int main(){
    B0 b0; B1 b1; D1 d1; B0 *p;
    p = &b0; fun(p);
    p = &b1; fun(p);
    p = &d1; fun(p);
    system("pause");
    return 0;
}

此處的函數都不是虛函數。

主函數裏定義了一個類型爲B0的指針p,

接下來調用指針p的fun函數。

與Java類似,基類指針調用非虛函數時,不管其指向的是哪一個類型的對象,都是調用基類的重載函數。

所以輸出會是:

B0::display()

B0::display()

B0::display()

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