![]() |
1
5
打电话没有成功 非虚的 子类中的函数。如果您像在示例中那样调用纯虚拟函数的重写版本,那么虚拟惩罚可能仍然存在。一般来说,编译器很难优化虚拟表的使用,除非在非常特殊的情况下,在这种情况下,编译器知道所讨论对象的确切的按值类型(从上下文)。 但说真的,不要担心开销。这将是如此之少,以至于在实践中,您几乎肯定不会遇到这样的情况:它是导致性能瓶颈的代码的一部分。使用对您的设计有意义的虚拟功能,而不必担心(微小的)性能损失。 |
![]() |
2
2
我不知道你在说什么“一套功能”。你有两个派生类-
当编译器不知道正在使用的对象的动态类型时,就会发生虚拟调度。例如,如果您有一个指针
另外,在您的示例中没有“虚拟继承”。术语 虚拟继承 在C++中有它自己的意思。你不是在说虚拟继承。 |
![]() |
3
0
“双调度”命中仅在方法为虚拟时发生。如果派生方法不是虚拟的,则不会影响性能。 |
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 4 月前 |
![]() |
Die4Toast · 递归调用成员箭头运算符-> 4 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 4 月前 |