4

VSTS2008でネイティブC++を使用しています。仮想関数に関する簡単な質問です。以下の私のサンプルでは、​​FooをDerivedクラスで「virtualvoidFoo()」または「voidFoo()」として宣言した場合の違いはありますか?クラス派生から派生する将来のクラスへの影響はありますか?

class Base
{
public:

    Base()
    {
    }

    virtual void Foo()
    {
        cout << "In base" << endl;
    }
};

class Derived : public Base
{
public:

    Derived()
    {

    }

    void Foo()
    {
        cout << "In derived " << endl;
    }
};
4

2 に答える 2

9

変わりはない。しかし、読みやすくするために、私はvirtualいつでもいつでもそれを維持します。

于 2010-03-11T12:51:25.370 に答える
4

いいえ、基本クラスのメンバー関数と同じシグネチャを持っている限り、自動的に仮想化されます。ただし、コードを読んでいる人を混乱させないように、明示的に仮想化する必要があります。

于 2010-03-11T12:53:17.880 に答える