应该是新手问题...
我在现有类 A 中有现有代码,我想扩展它以覆盖现有方法 A::f()。
所以现在我想创建类 B 来覆盖 f(),因为我不想只更改 A::f(),因为其他代码依赖于它。
为此,我相信我需要将 A::f() 更改为虚拟方法。
我的问题是除了允许动态调用方法(使用 B 的实现而不是 A 的实现)之外,使方法虚拟化还有其他含义吗?我是否打破了某种良好的编程习惯?这会影响任何其他尝试使用 A::f() 的代码吗?
请告诉我。
谢谢,jbu
编辑:我的问题更多的是让别人的方法虚拟化有什么问题吗?即使您没有更改其他人的实现,您仍然必须进入某人的现有代码并更改声明。