Je suis légèrement confus au sujet du polymorphisme d'exécution. Corrigez-moi si je me trompe, mais à ma connaissance, le polymorphisme d'exécution signifie que les définitions de fonctions seront résolues lors de l'exécution.Que signifie exactement le polymorphisme d'exécution?
Prenez cet exemple:
class a
{
a();
~a();
void baseclass();
}
class b: class a
{
b();
~b();
void derivedclass1();
}
class c: class a
{
c();
~c();
void derivedclass2();
}
méthode d'appel:
b derived1;
a *baseptr = &derived1; //here base pointer knows that i'm pointing to derived class b.
baseptr->derivedclass1();
Dans la méthode d'appel ci-dessus, la classe de base sait qu'il pointe vers la classe dérivée b.
Alors, d'où vient l'ambiguïté?
Dans quels cas les définitions de fonction seront-elles résolues lors de l'exécution?
Quelle ambiguïté? Le code que vous avez publié ne présente aucun polymorphisme. –
En fait, le code ne compile pas parce que vous ne pouvez pas appeler 'derivedclass1' en utilisant un pointeur sur' a' (sauf si vous lancez explicitement 'b' en premier, bien sûr). – sepp2k