我有一个班级A
和一个继承自B
的班级A
。 A
有一个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
的代码?