也许这是一个非常基本的问题,但我的面向对象体验来自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
中简单地修改它吗?
答案 0 :(得分:0)
我需要在B类虚拟中使用doSmth()方法,是吗?
不,如果已在班级virtual
中声明A
,则无需执行此操作。从doSmth()
派生的所有类型中的A
都是虚拟的。如果在每个派生类型中声明它virtual
,它可能有助于使代码更具可读性。
答案 1 :(得分:0)
不,在C ++中如果将特定函数声明为虚拟,则在派生类中变为虚拟。但是,在派生类中添加虚拟可以提高可读性和理解力,因此这是一个很好的实践