【发布时间】:2016-03-19 06:53:05
【问题描述】:
这似乎是一个基本问题,但我没有看到它被问到:
假设以下简单情况:
没有虚拟成员。
虚拟继承用于允许多个路径指向同一个基。
就访问最派生类的成员所需的时间而言,虚拟继承的代价是多少?特别是,如果有一个非零价格,它是否只与通过多条路径继承的成员或其他成员有关?
【问题讨论】:
-
你的意思是“访问一个最派生类的成员,只给一个指向虚拟基础子对象的指针”?
-
对虚拟表的每次查找都有一个非零价格。答案取决于实施。我猜这是一个 O(1) 哈希表。
-
没有虚拟会员。成员被覆盖。虚拟继承用于允许到同一个基的多个路径。
-
如果没有虚函数,就没有什么可以覆盖的。
-
没有。覆盖是关于虚函数。如果没有虚函数,则无需覆盖任何内容。
标签: c++ inheritance virtual-inheritance