0

Derived1とDerived2はBaseから継承しますが、Derived1とDerived2から継承するクラスはありません。以下で宣言されているクラスでは、メンバー関数foo()の宣言でキーワード'virtual'を使用しないことで、間接参照のレベルを1つ減らすことができますか?または、より具体的には、関数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 に答える