首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行时的Vtable修改

运行时的Vtable修改
EN

Stack Overflow用户
提问于 2016-04-17 16:31:51
回答 2查看 1.7K关注 0票数 13

对于那些使用vtables的编译器实现:是否存在虚函数表在运行时更改的情况?或者vtable仅在编译时填充,在运行时不执行任何操作来修改它们?

EN

回答 2

Stack Overflow用户

发布于 2016-04-17 16:39:03

据我所知,没有任何C++ ABI具有在运行时使用更改虚拟表的多态性实现。

因为虚表通常描述代码的一个属性(成员函数相互之间的关系w.r.t。在类层次中的位置),并且C++代码在运行时不会改变。

因为它不会有用,所以它是浪费的。

票数 8
EN

Stack Overflow用户

发布于 2016-04-17 17:12:30

简短的回答是否定的。

一个稍微长一点的(可能是特定于实现的)答案是,在派生多态类的构造函数和析构函数的执行过程中,对象指向实际vtable的指针会发生变化,因此在派生类尚未构造/析构时,派生类中被覆盖的方法不会被基类的构造函数/析构函数执行。

如果您希望对象在运行时更改类,那么您有许多选择:

  1. objective-c(++)
  2. hand-code your your mechanism
  3. python/javascript等。
  4. (最佳选择)重新考虑您的设计。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36674323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档