是否应该内联虚拟调用函数?

时间:2019-05-23 08:18:00

标签: c++ c++11

对不起,如果代码中有错误。目前正在通过手机撰写。

请考虑以下情形:

 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()

编译器是否对其进行了优化?

0 个答案:

没有答案