c++ - 如何调用派生类中未定义的基类函数?

标签 c++

<分区>

我一直认为基类的公共(public)方法确实被派生类继承,甚至认为派生类没有那个特定方法的定义。例如

#include <iostream>

using namespace std;


    class A {
    public:
        int f() { cout << 3; return 0;}
        int f(int x) {cout << x; return 0;}
    }; 

    class B: public A {
    public:
        int f() {std::cout << 5; return 0;}

    };


    int main(){
       B ob;
       ob.f(7); 

       return 0;
    }

我期望结果是 : 7 ,但我得到编译错误

"错误:函数调用的参数过多,预​​期为 0,实际为 1;您是说 'A::f' 吗?"

我知道错误的意思,但我对未调用 Base 类的函数感到有点困惑。

最佳答案

重载派生类中的方法会隐藏所有基类版本。即使签名不同。如果派生类中存在与基类中同名的方法,则无法直接调用基类类版本。

你可以做到

  ob.A::f(7);

关于c++ - 如何调用派生类中未定义的基类函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37803255/

相关文章:

c++ - 如何为同一类对象的成员函数保留单独的变量拷贝?

java - 与线程一起使用的音乐库

c++ lambda按值捕获

c++ - 如何将负多边形与内部负多边形连接起来?

c++ - 资源泄漏 - 设备上下文过多

c++ - 游戏菜单不工作 C++

C++ 模板和友元声明

c++ - 张量积算法优化

c++ - 可以执行 ffmpeg 而不使用他们的库吗?

带有水果的 C++ 依赖注入(inject)