ab est un A (un B transformé en A)
f(A a) de A accepte les B qui sont des A.
ab.f(bb) => A::f(bb) => A::f(B) ? (je connais pas de f(B) dans mon contexte A) => A::f(A) => AA
En fait, dans le contexte de ab (contexte de A), on ne connait pas de fonction qui a une signature f(B b), donc on prend celle qui fonctionne par l'héritage quand même A::f(A a).
Si jamais tu enlèves l'argument de f(), il connaitrait B::f() puisqu'elle écraserait A::f(). Et idem si tu créais B::f(A), il ferait appel à B::f(A) et pas à A::f(A), et idem si tu fais A::f(B) et B::f(B), il irait chercher B::f(B).
C'est mon interpréation
Message édité le 21 décembre 2017 à 09:06:15 par whiteapplex