Влияние виртуального ключевого слова с функцией в *производном* классе на производительность

Derived1 и Derived2 наследуются от Base, в то время как ни один класс не наследуется от Derived1 и Derived2. В классах, объявленных ниже, смогу ли я уменьшить один уровень косвенности, не используя ключевое слово «виртуальный» в объявлении функции-члена foo()? Или, точнее, производительность функции 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(); 
   }

person sank    schedule 14.05.2012    source источник
comment
stackoverflow.com/search   -  person R. Martinho Fernandes    schedule 14.05.2012


Ответы (2)


Нет, нет никакой разницы.

Ключевое слово virtual является необязательным в производных классах. Если функция виртуальна в базовом классе, она виртуальна и во всех производных классах.

person Bo Persson    schedule 14.05.2012

Нет, поскольку Base::foo равно virtual, не имеет значения, используете ли вы virtual в производных классах. Это будет виртуальная функция независимо от того, используете ли вы ключевое слово virtual или нет.

person Naveen    schedule 14.05.2012