虚函数及其开销

时间:2014-09-23 07:24:07

标签: c++ virtual-functions

我遇到了这个问题,想知道答案是什么?

  

以下哪个选项描述了类的预期开销   有五个虚函数?

     

一个。该类的每个对象都保存结构的地址   5个虚函数的地址

     

B中。该类的每个对象都保存五个虚拟的地址   功能

     

℃。该类的每个对象都保存下一个虚拟的地址   功能

     

D.该类的每个对象都包含链接列表对象的地址   它包含虚函数的地址。

     

E.该类的每个对象都包含类声明的地址   在内存中解析虚函数调用。

我熟悉虚拟表,每个类都有一个虚拟表,指示哪个虚拟功能指向哪个实现。但是我不确定类的实例如何与该虚拟表通信。我的猜测是A.如果我对错,请告诉我,并对答案作出一些解释。

1 个答案:

答案 0 :(得分:4)

我认为正式标准没有说明V-table的实现方式,但我也会说答案A.

http://en.wikipedia.org/wiki/Virtual_method_table

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3797.pdf

第10.3节未规定任何具体实施。

从第10.3节开始 “虚拟说明符意味着成员资格,因此虚拟函数不能成为非成员(7.1.2) 功能。虚函数也不能是静态成员,因为虚函数调用依赖于特定对象来确定调用哪个函数“

仅此而已。