gpt4 book ai didi

c++ - C++ 中的同时覆盖和重载

转载 作者:行者123 更新时间:2023-11-30 05:13:42 25 4
gpt4 key购买 nike

大家好,我对以下一段 C++ 代码感到困惑,其中重载和覆盖在某种程度上是同时发生的。

这是我的编译器给出的错误(Code::Blocks 13.12 中的 mingw32-g++)

error: no matching function for call to 'Derived::show()'
note: candidate is:
note: void Derived::show(int)
note: candidate expects 1 argument, 0 provided

这是生成它们的代码。

    #include <iostream>
using namespace std;

class Base{
public:
void show(int x){
cout<<"Method show in base class."<<endl;
}
void show(){
cout<<"Overloaded method show in base class."<<endl;
}
};

class Derived:public Base{
public:
void show(int x){
cout<<"Method show in derived class."<<endl;
}
};

int main(){
Derived d;
d.show();
}

我试图将 Base::show() 声明为虚拟的。然后我对 Base::show(int) 进行了同样的尝试。也不行。

最佳答案

这是名字隐藏。 Derived::show 隐藏了 Base 中的同名方法。您可以通过 using 来引入它们。

class Derived:public Base{
public:
using Base::show;
void show(int x){
cout<<"Method show in derived class."<<endl;
}
};

关于c++ - C++ 中的同时覆盖和重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43819723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com