在某些代码中重写方法的方式是什么

时间:2019-02-23 00:06:13

标签: c++ override

假设我们有以下代码:

<wm:WatermarkBox WatermarkBackColor="White" />

它将为我们提供以下输出: class Base { public: virtual void foo() const { cout << "In Base::foo\n"; } } class Derived : public Base {public: virtual void foo() { cout << "In Derived::foo\n"; } } void main() { Base* b = new Derived(); b->foo(); delete b; }

现在假设我想获得-在不更改主要功能的情况下-以下输出代替了上面给出的输出:

In Base::foo

据我了解,我应该重写基础函数的 foo(),以获取方法的输出 foo()在继承类(“派生”类)中。 但是问题在于,在那种情况下,我不能使用命令In Derived::foo ,因为基中的方法定义为constant,而在另一类中则不是。

那么,如果我应该重写该方法,该怎么办?

1 个答案:

答案 0 :(得分:0)

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

  

那么,如果我应该重写该方法,该怎么办?

添加缺少的const限定词。


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

  • main必须返回int
  • 类定义必须以分号结尾。
  • 除非基本的析构函数是虚拟的,否则通过指向基本的指针删除派生对象的行为未定义。