首页 > 解决方案 > 应该能够内联函数的虚拟调用吗?

问题描述

对不起,如果代码中有错误。目前用手机写。

考虑以下场景:

 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()不同的可能类的实例。

编译器是否优化它?

标签: c++c++11

解决方案


推荐阅读