【发布时间】:2009-11-30 18:33:59
【问题描述】:
应该是新手问题...
我想扩展现有类 A 中的现有代码以覆盖现有方法 A::f()。
所以现在我想创建类 B 来覆盖 f(),因为我不想只更改 A::f(),因为其他代码依赖于它。
为此,我相信我需要将 A::f() 更改为虚拟方法。
我的问题是除了允许动态调用方法(使用 B 的实现而不是 A 的实现)之外,使方法虚拟化还有其他含义吗?我是否打破了某种良好的编程习惯?这会影响任何其他尝试使用 A::f() 的代码吗?
请告诉我。
谢谢, jbu
编辑:我的问题更像是让别人的方法虚拟化有什么问题吗?即使您没有更改其他人的实现,您仍然必须进入某人的现有代码并更改声明。
【问题讨论】:
-
您不能只在第三方组件的标头中添加
virtual并使其工作 - 您还需要重新编译该组件。 -
很多人给了你有用的答案,而你却没有费心去标记它们,或者接受一个答案。这不好。
标签: c++ virtual overriding implementation