若基类的虚函数在派生类内没有被重写,是否还可调用,请举例
时间: 2024-03-02 10:54:34 浏览: 68
在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数。下面就是一个例子:
5星 · 资源好评率100%
是可以调用的。下面是一个示例代码:
```c++
#include <iostream>
using namespace std;
class Base {
public:
virtual void func() {
cout << "Base::func()" << endl;
}
};
class Derived : public Base {
public:
// 没有重写 Base::func()
};
int main() {
Base* ptr = new Derived();
ptr->func(); // 调用的是 Base::func()
delete ptr;
return 0;
}
```
在这个示例中,`Base` 类有一个虚函数 `func()`,`Derived` 类从 `Base` 继承,但没有重写 `func()`。在 `main()` 函数中,我们创建了一个 `Derived` 类型的对象,并将其地址赋给一个 `Base` 类型的指针 `ptr`,然后调用 `ptr->func()`。由于 `func()` 是虚函数,因此会根据指针指向的对象类型来决定调用哪个版本的函数。在这个例子中,`ptr` 指向的对象是 `Derived` 类型的,但由于 `Derived` 类没有重写 `func()`,因此会调用 `Base` 类的版本,输出 `Base::func()`。
阅读全文