基类A
有子类B
,B
也有子类C
。A
实现了一个虚方法doStuff()
,B
没有,也C
确实。从C
,我想调用A
的实现doStuff()
(我在C
的实现中这样做,doStuff()
但这并不重要。)我应该调用
A::doStuff();
或者:
B::doStuff();
第一个似乎更清楚,因为它指的是实际的实现。另一方面,如果我后来决定B
需要doStuff()
不同于A
. 哪个更标准?哪个更危险?
我有点惊讶B::doStuff()
没有触发任何警告,但我想根据定义B
,即使它来自基类,它也有一个实现。基类和实现的链可以任意长和复杂吗?例如,如果我有A
through Z
,每个都是前一个的子类,我是否可以在链中的任何地方都有实现,并且调用任何类的方法是否只是“向上链”直到找到实现?