Domanda

Sto usando nativo C ++ con VSTS 2008. Una rapida domanda sulla funzione virtuale. Nel mio esempio riportato di seguito, le differenze se dichiaro Foo come "vuoto Foo virtuale ()" o "vuoto Foo ()" in classe derivata? Qualsiasi impatto per tutte le classi futuri che deriverà dalla classe derivata?

class Base
{
public:

    Base()
    {
    }

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

class Derived : public Base
{
public:

    Derived()
    {

    }

    void Foo()
    {
        cout << "In derived " << endl;
    }
};
È stato utile?

Soluzione

Nessuna differenza. Ma per il bene di leggibilità tengo sempre il virtual ogni volta che è.

Altri suggerimenti

No, fintanto che ha la stessa firma la funzione di membro nella classe base, verrà automaticamente reso virtuale. Si dovrebbe fare in modo esplicito virtuale, tuttavia, per evitare di confondere chiunque la lettura del codice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top