【发布时间】:2015-06-24 18:31:23
【问题描述】:
最近我参加了一个采访。面试官让我解释C++中的虚函数机制。我解释了使用 VPTR 和 VTABLE。我详细解释了如何使用 VPTR 和 VTABLE 来实现运行时多态性。
当我解释编译器如何引入隐藏代码以从类中获取 VPTR、从 VTABLE 获取函数地址并解析调用时。但他对这个答案并不满意。他问我隐藏代码的详细信息?编译器究竟做了什么?如果编译器为你做所有事情,那么开发者有什么用?
我搜索了有关虚函数编译器角色的详细信息。关于隐藏代码。但仍然不清楚这个问题。
请问有什么帮助或指点吗?
【问题讨论】:
-
从技术上讲,根本不需要使用vtable,听起来面试的人只是在提升自己的自我。
-
我猜当“使用开发者”成为话题时,采访接近尾声了?
-
我不明白为什么编译器如何实现虚拟方法很重要。恕我直言,唯一重要的概念是如何在高层次理解中解决虚拟方法。
-
这是否意味着我们作为开发人员不必担心编译器如何实现其虚拟机制?我的观点是关于“隐藏”代码。
标签: c++ compiler-construction virtual-functions