C++ 中的 vtable 是什么?
可能的重复:
为什么需要虚拟表?
C++ 中的 vtable 是什么?
到目前为止我知道 vtable 是一个虚拟表,它有一个指向虚拟函数的指针数组。我可以阅读一篇包含实际实现示例的文章吗? (任何步行将不胜感激。)
Possible Duplicate:
why do I need virtual table?
What is a vtable in C++?
So far I know that vtable is a virtual table which has an array of pointers to virtual functions. Is there an article I can read with an example of a practical implementation? (Any walk through will be appreciated.)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
V 表(或虚拟表)是大多数 C++ 实现实现多态性的方式。对于类的每个具体实现,都有一个指向所有虚方法的函数指针表。指向该表(称为虚拟表)的指针作为数据成员存在于所有对象中。当调用虚拟方法时,我们查找对象的 v 表并调用适当的派生类方法。
V-tables (or virtual tables) are how most C++ implementations do polymorphism. For each concrete implementation of a class, there is a table of function pointers to all the virtual methods. A pointer to this table (called the virtual table) exists as a data member in all the objects. When one calls a virtual method, we lookup the object's v-table and call the appropriate derived class method.
vTable(虚拟表)是动态调度(
虚拟
方法)的实现细节。有关更多详细信息,请参阅 C++-Lite-Faq。
vTable (virtual table) is an implementation detail of dynamic dispatch (
virtual
methods).See C++-Lite-Faq for more details.
无论如何,它并不是一个标准的 C++ 术语。它只是实现用来实现虚函数/动态绑定的实现细节
For all it's worth, it is not a standard C++ terminology. It is just an implementation detail used by the implementation to implement virtual functions/dynamic binding