相关疑难解决方法(0)

C++成员函数隐藏的原因

可能重复:
名称隐藏和脆弱的基本问题

我熟悉涉及成员函数隐藏的规则.基本上,具有与基类函数同名的函数的派生类实际上不会重载基类函数 - 它完全隐藏它.

struct Base
{
    void foo(int x) const
    {

    }
};

struct Derived : public Base
{
    void foo(const std::string& s) { }
};


int main()
{
    Derived d;
    d.foo("abc");
    d.foo(123); // Will not compile! Base::foo is hidden!
}
Run Code Online (Sandbox Code Playgroud)

所以,您可以通过using声明解决这个问题.但我的问题是,基类函数隐藏的原因是什么?这是标准委员会的"特征"还是"错误"?是否存在一些技术原因导致编译器在找不到匹配项时无法在Base类中查找匹配重载d.foo(123)

c++

22
推荐指数
3
解决办法
1万
查看次数

标签 统计

c++ ×1