#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;
}
//在构造函数和析构函数中调用虚函数,不是多态。
编译时即可确定,调用的函数是自己的类或基类中定义的函数,不会等到运行时才决定调用自己的还是派生类的函数。