举一个例子,要求在派生类中定义于基类同命但不是虚函数的函数
时间: 2024-02-22 16:58:10 浏览: 82
在C++多继承体系当中,在派生类中可以重写不同基类中的虚函数。下面就是一个例子:
5星 · 资源好评率100%
下面是一个例子,演示了在派生类中定义与基类同名但不是虚函数的函数:
```cpp
#include <iostream>
using namespace std;
class Base {
public:
virtual void func() {
cout << "Base::func()" << endl;
}
void func(int x) {
cout << "Base::func(int)" << endl;
}
};
class Derived : public Base {
public:
void func() {
cout << "Derived::func()" << endl;
}
void func(double x) {
cout << "Derived::func(double)" << endl;
}
};
int main() {
Base* p = new Derived();
p->func(); // 调用 Derived::func()
p->func(1); // 调用 Base::func(int)
// p->func(1.0); // 错误:Base 中没有 func(double) 函数
delete p;
return 0;
}
```
在这个例子中,我们定义了一个基类 Base,其中包含一个虚函数 func 和一个非虚函数 func(int)。然后定义一个派生类 Derived,其中覆盖了基类的虚函数 func,并新增了一个非虚函数 func(double)。
在 main 函数中,我们使用基类指针指向派生类对象,并分别调用 func、func(int) 和 func(double) 函数。由于 func 是一个虚函数,因此会动态绑定到派生类的实现,输出 "Derived::func()"。而 func(int) 是一个基类的非虚函数,会直接调用基类的实现,输出 "Base::func(int)"。而 func(double) 是派生类新增的函数,无法通过基类指针调用,会导致编译错误。
阅读全文