#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;

}

//在构造函数和析构函数中调用虚函数,不是多态。

编译时即可确定,调用的函数是自己的类或基类中定义的函数,不会等到运行时才决定调用自己的还是派生类的函数。