我有一个可能会被其他方扩展(继承)的类。
所以我将"合理可行的"函数声明为virtual
。
在我当前的应用程序上,此类永远不会继承。
因此,这样做似乎很浪费,因为在每个功能上读取V台的开销。
当类层次结构中只有一个 v-table时,我一直在考虑一种优化它的方法。
,但似乎不可能,因为编译器无法推断这一重要信息。
因此,唯一想到的解决方案是与预处理器有关,但我怀疑有一个。
我很确定我不是第一个遇到此问题的人,因此任何建议都将不胜感激...
更新:
也许我应该将标题文件留而没有任何virtual
,并在需要时添加其他用户。
,但听起来不像正确的方式...
如果您进行了验证,这是瓶颈,那么进行此小解决方法可能值得:
#define omg_virtual
及以后添加更多类:
#define omg_virtual virtual
或简单地在代码库上进行搜索。
您不应使每个方法虚拟。这应该是一个真正的设计决定,而权衡是针对灵活性的小表现。
对于您的用例,很可能编译器可以将您的呼叫推断为虚拟方法,不需要查找vtable并将其丢弃。