C++ 中的同时覆盖和重载
Simultaneous overriding and overloading in C++
大家好我对以下一段 C++ 代码感到困惑,其中重载和覆盖在某种程度上是同时发生的。
这是我的编译器给出的错误(mingw32-g++ inside Code::Blocks 13.12)
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++ 代码感到困惑,其中重载和覆盖在某种程度上是同时发生的。
这是我的编译器给出的错误(mingw32-g++ inside Code::Blocks 13.12)
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;
}
};