我想分析实现多态的各种方法之间的权衡。我需要一个具有一些相似性和成员函数差异的对象列表。我看到的选项如下:c + +交换与成员函数指针与虚拟继承
- 在每个对象中都有一个标志,并且在每个函数中都有一个switch语句。 该标志的值将每个对象指向其每个函数的特定部分 。
- 在对象中有一个成员函数指针数组,这些成员函数指针在构造时分配为 。然后,我把那个函数指针调到 得到正确的成员函数。
- 有一个具有多个派生类的虚拟基类。其中一个 的缺点是,我的列表现在必须包含指针,而不是对象本身。
我的理解是,选项3中列表中的指针查找将花费比选项2的成员函数查找更长的时间,因为确保了成员函数的接近度。
这些选项的一些优点/缺点是什么?性能优于可读性。 有没有其他的多态性方法?
1.可怕的,2.稍微可怕的,3.你最好的选择,4.你需要多态吗?通常你可以通过使用模板来解决这个问题...... – Nim
“我的优先考虑是性能优于可读性。” - 大错特错。如此可怕的错误。即使你需要性能,为什么你手动重新实现虚拟功能,如果语言已经提供了它们(通过多态 - vtables任何人?)? – 2013-12-23 09:37:49
“我的优先考虑是性能优于可读性。”在你有权说出这个句子之前,你应该学习基准/简介代码。 –