gpt4 book ai didi

c++ - 虚拟继承在不需要或不使用时是否有成本?

转载 作者:行者123 更新时间:2023-11-27 22:49:16 24 4
gpt4 key购买 nike

如果我执行以下操作:

class Derived : public virtual Base {};

但是 Base 永远不会在同一个后代类中出现两次,还有成本吗?换句话说,简单地添加关键字是否会为 BaseDerived 的子类之间的任何虚函数调用引入额外的间接级别?还是从触发它的后代类的角度来看,Base 出现两次或更多次?

关于这个的措辞有点强硬......我希望我的问题是有道理的。

最佳答案

如果Derivedfinal然后编译器可以去虚拟化从Base的继承;但是,不能保证它,并且平台 ABI 可能会阻止它这样做。

如果Derived不是 final , 编译器必须预期 Derived可能是具有另一个 Base 的完整对象的子对象:

class MoreDerived : public virtual Base, public Derived {};

编译器还可以将 Derived 的继承去虚拟化来自 Base在链接时优化期间,如果它可以观察到 Derived永远不会作为子对象出现;但同样,不能保证它会这样做。

关于c++ - 虚拟继承在不需要或不使用时是否有成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39170105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com