虚拟函数及其开销
Virtual Functions and its overhead
我遇到了这个问题,想知道答案是什么?
以下哪个选项描述了类的预期开销有五个虚拟功能?
A。类的每个对象都包含一个结构的地址5个虚拟功能的地址
B。类的每个对象都包含五个虚拟对象的地址功能
C。类的每个对象都保存下一个虚拟对象的地址作用
D.类的每个对象都包含链接列表对象的地址其保存虚拟函数的地址。
E.类的每个对象都持有类声明的地址在内存中,通过该内存解析虚拟函数调用。
我熟悉虚拟表,每个类都有一个虚拟表,指示哪个虚拟函数指向哪个实现。然而,我不确定类的实例是如何与那个虚拟表通信的。我的猜测是A。请告诉我我是对是错,并对答案做出一些解释。
我认为官方标准没有规定如何实现V表,但我也会说它的答案是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)作用虚拟函数也不能是静态成员,因为虚拟函数调用依赖于特定对象来确定调用哪个函数"
仅此而已。
相关文章:
- 类型擦除的std::function与虚拟函数调用的开销
- 在编译时评估函数开销的通用方法
- 在循环中调用同一虚函数的开销
- 使用静态成员函数而不是普通函数是否有任何开销?
- 使用递归模板函数是否会引入函数调用开销,或者编译器是否大部分时间都内联它(下面的示例)?
- 如果类没有任何成员变量,则通过临时对象调用类的成员函数的开销是多少?
- 减少非静态成员函数开销
- 如何最大限度地减少使用标量 SIMD 内部函数的 SIMD 注册表的双重负载开销
- 函数调用在C++中有明显的开销吗
- 快速交叉乘积.函数调用开销
- 为什么异常总是在具有可破坏堆栈对象的非叶函数中产生开销
- 每次调用负0.6ns的虚拟函数开销
- 最小化函数选择和函数调用开销
- 调用链函数是否会产生开销
- C++:如果所有数据可能都已有效,则在构造函数中进行验证是否有开销
- boost::lock_guard分配、构造函数和析构函数开销
- 确定性时的虚函数开销 (C++)
- 虚拟函数及其开销
- 与将标准作为模板参数传递给sort()相比,将标准函数指针传递给qsort()的开销更小
- 进程中函数调用的开销