0

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(); 
   }
4

2 回答 2

2

不,没有区别。

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

于 2012-05-14T16:58:07.470 回答
1

不,因为无论您是否在派生类中使用都没有Base::foo关系。无论您是否使用关键字,它都将是一个虚函数。virtualvirtualvirtual

于 2012-05-14T16:57:12.327 回答