虚拟关键字与* derived *类中的函数对性能的影响

时间:2012-05-14 16:54:34

标签: c++ performance polymorphism virtual-functions

Derived1和Derived2继承自Base,而没有类继承自Derived1和Derived2。 在下面声明的类中,通过在成员函数foo()的声明中不使用关键字“virtual”,我能够减少一个间接级别吗?或者更具体地说,Derived2 :: foo()函数的性能优于Derived1 :: foo()的性能?

     class Base{
     public: 
     virtual void foo();
    }

    class Derived1: public Base{
      public:
      virtual void foo();
   }   

   class Derived2: public Base{
      public:
      void foo(); 
   }

2 个答案:

答案 0 :(得分:2)

不,没有区别。

关键字virtual在派生类中是可选的。如果函数在基类中是虚函数,那么它在所有派生类中也是虚拟的。

答案 1 :(得分:1)

不,由于Base::foovirtual,因此在派生类中使用virtual并不重要。无论您是否使用virtual关键字,它都将是一个虚拟函数。