Euh. Une méthode virtuelle pure peut aussi être implémentée (on en parlait récemment sur un autre thread, si je retrouve le lien je le poste ici), en pratique.
Et on peut très bien redéfinir une méthode non-virtuelle dans les classes filles, seulement l'édition de liens se fera quand même de manière statique si on ne déclare pas la méthode "mère" comme étant virtuelle.
Quand une méthode est virtuelle, et qu'elle est redéfinie dans des classes filles, le compilateur va gérer une table de méthodes virtuelles, et permettre de résoudre un appel pendant l'exécution plutôt qu'à la compilation. J'ai déjà expliqué ça dans ton autre topic, si B hérite de A et redéfinit sa méthode virtuelle "affiche()", avec ce code:
A* pointeur = new B();
pointeur->affiche();
Le code appelé sera celui de B::affiche() et non A::affiche(). Alors que dans le cas où affiche() ne serait pas virtuelle dans A, c'est A::affiche() qui serait appelée (même si pointeur pointe vers un objet de classe B).