【问题标题】:Role of compiler for Virtual functions in C++C++中虚函数编译器的作用
【发布时间】:2015-06-24 18:31:23
【问题描述】:

最近我参加了一个采访。面试官让我解释C++中的虚函数机制。我解释了使用 VPTR 和 VTABLE。我详细解释了如何使用 VPTR 和 VTABLE 来实现运行时多态性。

当我解释编译器如何引入隐藏代码以从类中获取 VPTR、从 VTABLE 获取函数地址并解析调用时。但他对这个答案并不满意。他问我隐藏代码的详细信息?编译器究竟做了什么?如果编译器为你做所有事情,那么开发者有什么用?

我搜索了有关虚函数编译器角色的详细信息。关于隐藏代码。但仍然不清楚这个问题。

请问有什么帮助或指点吗?

【问题讨论】:

  • 从技术上讲,根本不需要使用vtable,听起来面试的人只是在提升自己的自我。
  • 我猜当“使用开发者”成为话题时,采访接近尾声了?
  • 我不明白为什么编译器如何实现虚拟方法很重要。恕我直言,唯一重要的概念是如何在高层次理解中解决虚拟方法。
  • 这是否意味着我们作为开发人员不必担心编译器如何实现其虚拟机制?我的观点是关于“隐藏”代码。

标签: c++ compiler-construction virtual-functions


【解决方案1】:

如果编译器为你做所有事情,那么开发者有什么用?

开发人员在那里指定他们的意图,而编译器在那里将意图转换为可执行文件。随着时间的推移,计算机变得越来越快,编译器越来越智能,因此无需在汇编代码中表达开发人员的意图,而是在 Erlang、F#、Prolog 等中表达。

也就是说,了解 C++ 编译器生成的代码细节很有趣,但这并不是 C++ 开发的核​​心。

最后,回答引用的问题:

编译器还没有完成所有工作。很遗憾。

【讨论】:

    猜你喜欢
    • 2017-10-03
    • 2014-04-04
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2010-09-17
    相关资源
    最近更新 更多