编译器在C ++中用于虚函数的作用

时间:2015-06-24 18:31:24

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

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

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

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

请,任何帮助或指示?

1 个答案:

答案 0 :(得分:1)

  

如果编译器正在为您做一切,那么开发人员有什么用?

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

换句话说,了解C ++编译器生成的代码的细节很有意思,但它不是C ++开发的核心。

最后,回答引用的问题:

编译器还没有做任何事情。不幸的是