这个要看基类的指针指向谁了!例如这个主函数程序:
int main()
{
Base b(5),*p; //定义基类对象,基类指针;
Derived d; //定义派生类对象;
p=&b; //对象指针指向基类对象
p->show(); //所以此时调用的是基类的show()函数
p=&d; //对象指针指向派生类对象
p->show(); //此时调用的是派生类的show()函数
return 0;
}
虚函数会自己帮你确定. 不用担心.
若要问到原理的话, 一般来说都是通过"虚表"来实现了.
简单地说就是每个类型保存一个数组, 包含了类型的中的全部虚函数的地址.
实际上通过虚表来间接的调用函数.