这可能是一个初学者问题,抱歉。最近我在尝试使用C++中的一些高级内容——函数重载和继承时,遇到了一个奇怪的问题。
我将展示一个简单的例子来演示这个问题;
有两个类,classA
和classB
,如下所示:
class classA{
public:
void func(char[]){};
};
class classB:public classA{
public:
void func(int){};
};
据我所知,classB
现在应该拥有两个func(..)
函数,由于参数不同而被重载。
但是当在主方法中尝试这样做时;
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;
}
由于超类classA
中的方法void func(char[]){};
在派生类classB
中不可见,因此会出现错误。
我该怎么解决这个问题呢?难道这就是C++中重载的工作原理吗?虽然我是C++新手,但在Java中,我知道可以利用这样的东西。
尽管我已经找到了这个线程,它也提出了类似的问题,但我认为这两种情况是不同的。