注意:我不是在问为什么父类需要虚拟方法。
我记得那样的编码指南(我不记得很好,只是试着表达我自己的话,希望我有正确的措辞):如果父类有虚方法,派生类也应该在至少有一个虚方法,即使派生类本身也没有派生类,如果派生类真的不需要任何虚方法,则将析构函数设置为虚拟。背后的原因是"防止重复的虚拟表",它在说什么?
我还记得一个相关的例子:
class A{
virtual f();
};
class B : public A{
};
B没有派生类,如果B没有虚拟方法,结果就像"任何包含B的地方都会有一个由编译器生成的重复虚拟表" (也只是从我的印象中表达出来),那是什么意思(如果是真的)?
答案 0 :(得分:1)
请注意以下事项:
您提供的示例不存在任何问题。我会建议你忘记你认为你记得的关于这个编码标准的一切。