c++ - 在 OO 编程中,继承对运行时有哪些负面影响?

标签 c++ oop inheritance

我知道继承有一些积极的方面,但我不知道继承对运行时的负面影响?谁能告诉我一下,谢谢!

最佳答案

  • 与基于组合的系统相比,基于大型继承的系统通常使用更多的内存并且数据布局更差,由于缓存的行为方式(您希望相关的所有内容都尽可能紧密地打包),这会在速度方面产生运行时成本。
  • 虚函数调用需要访问虚函数表才能检索要调用的正确函数,由于缓存行为,虚函数表可能与调用函数相距甚远,这可能代价高昂。
  • 多重继承进一步增加了虚函数调用的成本,因为首先可能需要计算偏移量才能获得正确的 vtable。
  • 如果您正在使用 RTTI,那么您通常会在与 vtable 相关的固定位置看到额外的数据。这会影响 vtable 局部性,从而再次禁止缓存。

关于c++ - 在 OO 编程中,继承对运行时有哪些负面影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7837615/

相关文章:

c# - 如何使用可以处理整数或字符串值的泛型创建抽象基类?

c++ - 整数值的缩放(来自 float )

python - Python 中 "sending messages to objects"的一个很好的例子是什么?

c++ - 可以从命令行运行 C++ 代码,但不能从 visual studio 中的 Debug模式运行

c# - 在 C# UWP 应用程序中的何处粘贴 API 调用

oop - 指针/引用数据成员是否表示 UML 中的关联或聚合关系?

java - 如何向下转换 Java 对象?

inheritance - 了解 F# 3.0 中 protected /基本成员使用的更改

c++ - Character::BeginPlay() 未被调用

c++ - 修改指针属性