首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果仅部分重写重载函数,则多态性不起作用

如果仅部分重写重载函数,则多态性不起作用
EN

Stack Overflow用户
提问于 2012-08-25 00:17:13
回答 2查看 892关注 0票数 6

今天我觉得自己像个菜鸟:

代码语言:javascript
运行
复制
class Base
{
public:
    virtual void foo(int)=0;
    virtual void foo(int, int) {}
    virtual void bar() {}
};

class Derived : public Base
{
public:
    virtual void foo(int) {}
};

void main()
{
    Derived d;
    d.bar(); // works
    d.foo(1); // works
    d.foo(1,2); // compiler error: no matching function call
}

我期望dBase继承foo(int, int),但事实并非如此。那么我在这里错过了什么呢?

EN

Stack Overflow用户

回答已采纳

发布于 2012-08-25 00:19:35

这是因为具有相同名称的基函数是隐藏的。

对于没有覆盖的函数,您需要使用using

代码语言:javascript
运行
复制
class Derived : public Base
{
public:
    using Base::foo;
    virtual void foo(int) {}  //this hides all base methods called foo
};
票数 7
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12113074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档