虚方法和多重继承

时间:2013-06-01 08:27:37

标签: c++ inheritance multiple-inheritance

也许这是一个非常基本的问题,但我的面向对象体验来自Java,这就是为什么我不确定这个问题。

class A
   |
class B
   |
class C

我有class A A::doSmth()作为virtual protected方法。我的class B继承自class A并重新实施doSmth()作为private方法。现在我想创建class C,我想修改此类的doSmth()方法。我想我需要在doSmth()虚拟中设置class B方法,是吗?或者,由于class B继承class A并且doSmth()是虚拟的,我可以在class C中简单地修改它吗?

2 个答案:

答案 0 :(得分:0)

  

我需要在B类虚拟中使用doSmth()方法,是吗?

不,如果已在班级virtual中声明A,则无需执行此操作。从doSmth()派生的所有类型中的A都是虚拟的。如果在每个派生类型中声明它virtual,它可能有助于使代码更具可读性。

答案 1 :(得分:0)

不,在C ++中如果将特定函数声明为虚拟,则在派生类中变为虚拟。但是,在派生类中添加虚拟可以提高可读性和理解力,因此这是一个很好的实践