虚函数
#include<iostream>
using namespace std;
class A{
public:
A(){f();}
void f(){cout<<"A::f()"<<endl;g();}
virtual void g(){cout<<"A::g()"<<endl;}
};
class B: public A{
public:
void f(){cout<<"B::f()"<<endl;g();}
void g(){cout<<"B::g()"<<endl;}
};
int main(){
A *pa;
A a; //调用A::A(),A::f()
B b; //调用B::B(),A::A(),A::f()
pa=&b;
pa->f(); //调用A::f(),B::g()
return 0;
}
f()不是虚函数,g()是虚函数.为什么在pa->f()中,f调用了派生类B的g(),而不是基类A的g().基类f对g的从调用难道不是在编译时绑定的吗?