【问题标题】:Effect of virtual keyword with a function in the *derived* class on performance*派生的*类中带有函数的虚拟关键字对性能的影响
【发布时间】:2012-05-14 16:54:34
【问题描述】:

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

【问题讨论】:

标签: c++ performance polymorphism virtual-functions


【解决方案1】:

不,没有区别。

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

【讨论】:

    【解决方案2】:

    不,因为Base::foovirtual,所以在派生类中是否使用virtual 并不重要。不管你是否使用virtual关键字,它都是一个虚函数。

    【讨论】:

      猜你喜欢
      • 2011-06-21
      • 2023-03-12
      • 2011-06-21
      • 2015-10-24
      • 2020-09-30
      • 2011-11-16
      相关资源
      最近更新 更多