这可能是一个菜鸟问题,对此感到抱歉。我最近在尝试处理 c++ 中的一些高级内容、函数重载和继承时遇到了一个奇怪的问题。
我将展示一个简单的例子,只是为了演示这个问题;
有两个类,classA
和classB
,如下所示;
class classA{
public:
void func(char[]){};
};
class classB:public classA{
public:
void func(int){};
};
据我所知classB
,现在应该拥有两个func(..)
函数,由于不同的参数而重载。
但是在 main 方法中尝试这个时;
int main(){
int a;
char b[20];
classB objB;
objB.func(a); //this one is fine
objB.func(b); //here's the problem!
return 0;
}
它给出了错误,因为void func(char[]){};
超类中的方法,classA
在派生类中不可见,classB
。
我该如何克服呢?这不是 C++ 中重载的工作原理吗?我是 C++ 新手,但在 Java 中,我知道我可以使用这样的东西。
虽然我已经找到了这个询问类似问题的线程,但我认为这两种情况是不同的。