通过基类的指针或引用调用虚函数,发生动态绑定,引用或指针即可指向基类对象也可指向派生类对象

在运行时是怎样确定要调用基类的还是派生类的呢
2024-12-14 16:40:44
推荐回答(2个)
回答1:

这个要看基类的指针指向谁了!例如这个主函数程序:
int main()
{
Base b(5),*p; //定义基类对象,基类指针;
Derived d; //定义派生类对象;
p=&b; //对象指针指向基类对象
p->show(); //所以此时调用的是基类的show()函数
p=&d; //对象指针指向派生类对象
p->show(); //此时调用的是派生类的show()函数
return 0;

}

回答2:

虚函数会自己帮你确定. 不用担心.

若要问到原理的话, 一般来说都是通过"虚表"来实现了.
简单地说就是每个类型保存一个数组, 包含了类型的中的全部虚函数的地址.
实际上通过虚表来间接的调用函数.