c++ - 应该能够内联函数的虚拟调用吗?
问题描述
对不起,如果代码中有错误。目前用手机写。
考虑以下场景:
class A
{
public:
int funX()
{
return funY()*5;
}
virtual int funY() = 0;
};
class B : public A
// public: A
{
public:
int funY() override final
{
// implementation
}
};
int foo(B& b)
{
return b.funX();
};
在这段代码中,编译器有足够的信息来确定它需要调用B::funY()
而不虚拟调用它。final
但是,如果没有关键字,情况就不会如此。否则,可以发送一个C
实现funY()
不同的可能类的实例。
编译器是否优化它?
解决方案
推荐阅读
- jquery - 信息框中的 Mapbox 地理编码搜索结果
- node.js - 如何在 MongoDB/Mongoose 中执行并发保存/更新?
- c++ - 用户定义的文字未能包含另一个文件
- django - 如果 to_date 在 Django 中可以为 Null,如何匹配时间范围?
- c++ - 将文本从 pastebin 复制到变量 c++
- javascript - 如何给我的 ID Mongoose ObjectID?整个对象?
- c++ - 我尝试使用向量为学校项目创建合并排序。没有得到想要的输出
- java - 如何为 JAR 中的程序设置 ABL PROPATH?
- java - Gradle 构建失败 - SystemProp
- uwp - 如何将任意位置的图像或文件复制或删除到UWP应用程序中的文件夹中