【发布时间】:2013-11-19 21:07:10
【问题描述】:
仍然掌握 c++ 类的窍门,我想知道实现这一点的最高效的运行时方法是什么:
我有一个派生类,我想实例化一次(在编译时已知),但我想将指针类型转换为基类指针并将其传递给我的程序的其余部分以使用。这样,如果我有一个未来的项目我想将实例从 animal.dog 更改为 animal.cat,我的代码的所有其他部分仍然能够调用方法 animalPtr->eat(),但实际行为将特定于狗或猫。我只会有一个 animal.dog 或 animal.cat 的实例,而且我永远不会有一个基类动物的实例。
也许我刚才描述的正是我需要做的,但我阅读了一些关于让基类“动物”使用虚函数与让基类成为模板类的利弊的在线争论(不完全确定在这种情况下如何将其制成模板......对我来说,模板类看起来像是用于为成员创建通用数据类型,但这不是我在这里需要的)。
有什么帮助吗?请记住,速度性能对我来说是最高优先级。
【问题讨论】:
-
代替多态性(即使用继承和虚函数),您也许可以使用PIMPL idiom 来隐藏实现。
-
请记住,速度-性能对我来说是最高优先级 大多数情况下并非如此。好和更好之间的性能差异可能不值得为实现 更好 付出代价。构建一些简单的、有效的并且不可怕的东西,然后决定你是否需要额外的性能。几微秒的开发时间值得吗?
标签: c++ function templates virtual