小编Jam*_*mes的帖子

在C++中重载子类中的方法

假设我有一些像这样的代码:

class Base {
    public:
      virtual int Foo(int) = 0;
};

class Derived : public Base {
    public:
      int Foo(int);
      virtual double Foo(double) = 0;
};

class Concrete : public Derived {
    public:          
      double Foo(double);
};
Run Code Online (Sandbox Code Playgroud)

如果我有一个Concrete类型的对象,为什么我不能调用Foo(int)?
如果我更改Foo的名称(double)以便它不会重载Foo,那么一切都很好并且两种方法都可以访问,但这不是我想要的.
类似地,如果我在Derived中删除Concrete类并实现Foo(double),那么两者都是可访问的,但同样,不是我想要的.

c++ inheritance overloading

10
推荐指数
2
解决办法
5651
查看次数

标签 统计

c++ ×1

inheritance ×1

overloading ×1