gpt4 book ai didi

c++ - C++ 中的覆盖和重载是怎么回事?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:21:26 27 4
gpt4 key购买 nike

这行不通:

class Foo
{
public:
virtual int A(int);
virtual int A(int,int);
};
class Bar : public Foo
{
public:
virtual int A(int);
};

Bar b;
int main()
{
b.A(0,0);
}

似乎通过用 Bar::A(int) 覆盖 Foo::A(int) 我以某种方式隐藏了 Foo::A(int ,int)。如果我添加 Bar::A(int,int) 一切正常。

有没有人有一个链接,可以很好地描述这里发生的事情?

最佳答案

本质上,名称查找发生在重载解析之前,因此派生类中的函数 A 会覆盖基类中的虚函数,但会隐藏任何基类中具有相同名称的所有其他函数。

可能的解决方案包括将 using Foo::A; 指令添加到您的派生类中,以使所有名为 A 的基类成员在派生类中可见,或者使用不同的具有不同签名的函数的名称。

参见 here

关于c++ - C++ 中的覆盖和重载是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1480085/

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