gpt4 book ai didi

c++ - 虚拟关键字内部

转载 作者:搜寻专家 更新时间:2023-10-31 01:21:34 26 4
gpt4 key购买 nike

我听说过很多次虚函数通常是使用 vtable 实现的。但我实际上并不知道它是如何实现的以及它是如何工作的。

编辑

我实际上并没有得到这段代码:如何重写它。有人可以详细解释一下吗。

最后,让我们看看编译器是如何实现对虚函数的调用的。您的代码可能如下所示:

 // Your original C++ code

void mycode(Base* p)
{
p->virt3();
}

编译器不知道这是否会调用 Base::virt3()Der::virt3() 或者 virt3() 另一个甚至不存在的派生类的方法。它只能确定您正在调用 virt3(),而这恰好是 v 表的插槽 #3 中的函数。它重写了这样的调用:

 // Pseudo-code that the compiler generates from your C++

void mycode(Base* p)
{
p->__vptr[3](p);
}

最佳答案

internals of virtual functions的解释关于 C++ FAQ 非常好。你应该读一读。我觉得还是你自己去理解,然后提出你的疑问会更好。

关于c++ - 虚拟关键字内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3690238/

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