gpt4 book ai didi

c++ - 虚函数调用的编译器优化

转载 作者:可可西里 更新时间:2023-11-01 16:35:22 27 4
gpt4 key购买 nike

说明为什么虚拟分派(dispatch)发生在运行时的最流行的例子是当编译时无法确定将创建哪个派生类。例如:

Base* b = (rand() % 2 == 1 ? new Derived1() : new Derived2());

或者当它取决于用户输入时。

假设情况并非如此,并且可以在编译时完全确定基指针指的是哪个派生类。

如果在编译时知道基类指针指向哪个 Derived 类,编译器是否通过用适当的 Derived 函数替换它来优化虚函数调用并且在运行时不进行 vtable 查找?

最佳答案

这种优化称为去虚拟化。至少 Clang 执行它,请参阅 this blog postthis post on mailing list .

关于c++ - 虚函数调用的编译器优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50815642/

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