多態

#include<iostream>
using namespace std;
class Base{
    public:
    void fun1(){this->fun2();}//this是基類指針,fun2是虛函數,所以是多態 
    virtual void fun2(){cout<<"Base:fun2()"<<endl;} 
}; 
class Derived:public Base{
    public:
    virtual void fun2(){cout<<"Derived:fun2()"<<endl;} 
};
//在非構造函數和非析構函數的成員函數中調用虛函數,是多態!!! 
int main()
{
    Derived d;
    Base *pBase=&d;
    pBase->fun1();
    return 0;

}

//在構造函數和析構函數中調用虛函數,不是多態。

編譯時即可確定,調用的函數是自己的類或基類中定義的函數,不會等到運行時才決定調用自己的還是派生類的函數。

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