类B是类A的公有派生类,类A和类B都定义了虚函数fun,p是一个指向类A对象指针,则p->A::func()将A. 根据p所指的对象类型而确定调用类A中或类B中的函数func( ) B. 调用类B中的函数func( ) C. 调用类A中的函数func( ) D. 既调用类A中函数,也调用类B中的函数
时间: 2024-02-19 10:02:25 浏览: 84
C. 调用类A中的函数func()。使用作用域解析运算符"::"可以显式地指定调用哪个类中的成员函数。在这种情况下,p指向类A对象,因此调用p指向的对象的虚函数fun()时,使用作用域解析运算符"::"显式指定使用类A中的虚函数fun(),而不是类B中的虚函数fun(),即p->A::fun()将调用类A中的虚函数fun()。
相关问题
类B是类A的公有派生类,类A和类B都定义了虚函数fun,p是一个指向类A对象指针,则p-》
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()
```
阅读全文