gpt4 book ai didi

c++ 继承类中函数重载的问题

转载 作者:IT老高 更新时间:2023-10-28 14:02:03 32 4
gpt4 key购买 nike

这可能是一个菜鸟问题,对此感到抱歉。我最近在尝试处理 c++ 中的一些高级内容、函数重载和继承时遇到了一个奇怪的问题。

我将展示一个简单的例子,只是为了说明问题;

有两个类,classAclassB,如下;

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;
}

它给出错误,因为父类(super class) classA 中的方法 void func(char[]){}; 在派生类中不可见, classB.

我该如何克服这个问题?这不是 C++ 中重载的工作原理吗?我是 C++ 新手,但在 Java 中,我知道我可以使用类似的东西。

虽然我已经找到了this thread问了一个类似的问题,我认为这两种情况是不同的。

最佳答案

你只需要一个使用:

class classB:public classA{ 
public:
using classA::func;
void func(int){};
};

它不会在基类中搜索 func,因为它已经在派生类中找到了一个。 using 语句将另一个重载带入同一范围,以便它可以参与重载决议。

关于c++ 继承类中函数重载的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14212190/

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