我遇到了这个问题,想知道答案是什么?
以下哪个选项描述了类的预期开销 有五个虚函数?
一个。该类的每个对象都保存结构的地址 5个虚函数的地址
B中。该类的每个对象都保存五个虚拟的地址 功能
℃。该类的每个对象都保存下一个虚拟的地址 功能
D.该类的每个对象都包含链接列表对象的地址 它包含虚函数的地址。
E.该类的每个对象都包含类声明的地址 在内存中解析虚函数调用。
我熟悉虚拟表,每个类都有一个虚拟表,指示哪个虚拟功能指向哪个实现。但是我不确定类的实例如何与该虚拟表通信。我的猜测是A.如果我对错,请告诉我,并对答案作出一些解释。
答案 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) 功能。虚函数也不能是静态成员,因为虚函数调用依赖于特定对象来确定调用哪个函数“
仅此而已。