虚函数内的内联函数会发生什么?

时间:2010-02-21 15:29:34

标签: c++ virtual inline

如果在虚函数中使用内联函数会发生什么?我对这样的问题感到困惑 http://www.parashift.com/c++-faq-lite/value-vs-ref-semantics.html#faq-31.6

我能理解它,但是这意味着,在虚函数中使用(调用)内联函数是没有意义的(请假设它是动态调用的)?

class Wrapper
{
public:
   inline void doInlineJob() {;}
};

class Base
{
   virtual void foo()
   {
     //Do something
   }
};

class Derived: public Base
{
    void foo()
    {
      wrapObj.doInlineJob();
    }

    Wrapper wrapObj;
};

2 个答案:

答案 0 :(得分:9)

foo是否为虚拟并不重要。只有doInlineJob是虚拟的才重要。它不是,所以它可以没有问题地内联。

答案 1 :(得分:2)

  

如果我在虚函数中使用内联函数会发生什么?

没什么特别的。如果编译器同意,它将被内联,如果没有,它将不会。就像任何其他功能一样。

(请注意,常见问题解答会同时讨论本身 inlinevirtual的功能。这是不同的。)