我曾使用same title发帖。但由于误解,所有的答案都在讨论它是否是有效的代码/行为。
然而,主要问题是,如果优化将启动或不启动?
参考链接的帖子,请参阅真实案例:
D *pD = new D;
pD->foo(); // `D::foo()` is `final`
所有编译器是否会通过不踢入虚拟机制来优化pD->foo()
调用?
[注:
为什么我在前面的问题中给出了带有错误代码的示例?
我知道,以上述方式从基地到孩子的铸造并不是一个好的代码。主要目的是检查最终是否发生类似Java的优化,第一种方法是唯一可以在不进行汇编的情况下验证它的方法。
]