gpt4 book ai didi

overloading - 为什么函数覆盖隐藏了基类中重载的函数

转载 作者:行者123 更新时间:2023-12-04 05:36:25 25 4
gpt4 key购买 nike

请给我一个具体的答案,为什么函数覆盖会隐藏基类中重载的函数。

class Base{
public:
fun(int,int);
fun(B);
};
class Derived:public Base
{
public:
fun();
};

int main()
{
Derived d;
d.fun(1,2); // error
return 0;
}

最佳答案

TTBOMK 这没有真正的技术原因,只是 Stroustrup 在创建语言时认为这是更好的默认设置。 (这类似于右值不隐式绑定(bind)到非常量引用的规则。)

您可以轻松地解决它,将基类版本显式引入派生类的范围:

class Base {
public:
void fun(int,int);
void fun(Base);
};

class Derived : public Base {
public:
using Base::fun;
void fun();
};

另请参阅 WHY 链接,因为它说明了为什么基重载方法隐藏在派生类中: WHY

关于overloading - 为什么函数覆盖隐藏了基类中重载的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11866320/

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