Primordial vs Virtuel

Quel est le but de l'utilisation du mot réservé virtuel en face de fonctions? Si je veux un enfant de la classe pour remplacer une fonction parent, je viens de déclarer la même fonction comme void draw(){}.

class Parent { 
public:
    void say() {
        std::cout << "1";
    }
};

class Child : public Parent {
public:
    void say()
    {
        std::cout << "2";
    }
};

int main()
{
    Child* a = new Child();
    a->say();
    return 0;
}

La sortie est de 2.

Donc encore une fois, pourquoi le mot réservé virtual être nécessaire dans l'en-tête de say() ?

Merci beaucoup.

InformationsquelleAutor anonymous | 2010-05-28