在C ++中覆盖非虚方法

时间:2017-08-20 14:32:04

标签: c++ inheritance methods override virtual-method

我有一个班级A和一个继承自B的班级AA有一个foo方法,我想在B中覆盖。

class A {
public:
    void foo();
    ...
}

class B: public A {
public:
    void foo();
    ...
}

对此的解决方案当然是将A::foo()定义为虚拟方法,方法是将其声明为virtual void foo();。但问题是我无法做到这一点,因为A类是在第三方库中定义的,所以我宁愿不改变它的代码。

经过一些搜索,我找到了override关键字(以便B::foo的声明为void foo() override;),但自that's not what override is for以来这对我没有帮助},override显然只能用于虚方法,以确保该方法真正覆盖了另一种方法,并且程序员没有犯错,并且如果方法不是&#39则会产生错误; t虚拟。

我的问题是,如何在不更改A::foo的任何代码的情况下实现与A虚拟相同的效果,但只能更改B的代码?

0 个答案:

没有答案