类B是类A的公有派生类,类A和类B都定义了虚函数fun,p是一个指向类A对象指针,则p-》
时间: 2024-02-18 10:05:26 浏览: 84
类的派生——虚函数
fun()调用的是类A中的虚函数fun。在C++中,虚函数实现了多态性,可以使得通过基类指针或引用调用派生类中的函数时,调用的是派生类中的实现。但是,在这种情况下,调用的是哪个版本的虚函数取决于指针或引用的静态类型,而不是动态类型。因此,由于p是一个指向类A对象的指针,调用p指向的对象的虚函数fun()时,调用的是类A中的虚函数fun(),而不是类B中的虚函数fun()。如果想要调用类B中的虚函数fun(),需要将p的类型转换为类B的指针类型,如下所示:
```
B* q = static_cast<B*>(p);
q->fun(); // 调用类B中的虚函数fun()
```
阅读全文