#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;
}
//在構造函數和析構函數中調用虛函數,不是多態。
編譯時即可確定,調用的函數是自己的類或基類中定義的函數,不會等到運行時才決定調用自己的還是派生類的函數。