在某些代码中覆盖方法的方式是什么?

what is the way of overriding a method in some code

本文关键字:方式 是什么 方法 覆盖 代码      更新时间:2023-10-16

假设我们有以下代码:

 class Base
    {
    public:
    virtual void foo() const 
    { cout << "In Base::foon"; }
    }
    class Derived : public Base
    {public:
    virtual void foo() 
    { cout << "In Derived::foon"; }
    }
    void main()
    {
     Base* b = new Derived();
     b->foo();
     delete b;
    }

它将为我们提供以下输出:In Base::foo

现在假设我想获得 - 不更改主函数 - follwing输出,而不是上面给出的输出:

In Derived::foo
据我了解,

我应该覆盖基地中的函数 foo(),以获取方法的输出 foo()在"派生"类的继承类中。但是问题在于,在这种情况下,我不能使用命令override,因为基数中的方法定义为常数,在其他类中,它不是。

那么,如果覆盖该方法,我该怎么办?

为了覆盖基类的函数void foo() const,您必须在派生类中声明函数void foo() const。您已经声明了函数void foo()(请注意,const的缺乏),该功能不会覆盖基础中的函数,因为它具有不同的声明。

那么,如果覆盖该方法,我该怎么办?

添加缺少的const限定符。


P.S。您程序中的其他错误:

  • main必须返回int
  • 班级定义必须以分号结束。
  • 除非基础的击退器虚拟删除底函数,