派生类中如果存在与基类中同名的函数,则通过派生类对象不能直接调用基类中的同名函数,除非加上基类类名作为同名函数的前缀
时间: 2024-04-30 21:18:41 浏览: 66
基类,派生类
5星 · 资源好评率100%
是的,这是因为派生类会继承基类中的同名函数,从而导致函数名冲突。为了解决这个问题,可以在派生类中使用作用域解析运算符(::)来指定调用基类中的同名函数。例如,假设基类中有一个名为`foo()`的函数,派生类中也有一个同名函数,那么可以通过以下方式调用基类中的`foo()`函数:
```cpp
class Base {
public:
void foo() {
// do something
}
};
class Derived : public Base {
public:
void foo() {
// do something else
}
void callBaseFoo() {
Base::foo(); // 调用基类中的foo()函数
}
};
int main() {
Derived d;
// d.foo(); // 错误,无法直接调用基类中的foo()函数
d.callBaseFoo(); // 正确,通过作用域解析运算符调用基类中的foo()函数
return 0;
}
```
在上面的例子中,`Derived`类中的`callBaseFoo()`函数通过`Base::foo()`的方式调用了基类中的`foo()`函数。
阅读全文