Examen 2019 Question 4

Examen 2019 Question 4

by Lucas Antoine Reymond -
Number of replies: 2

Bonjour, 

Dans l'exercice du déroulement du programme de l'examen 2019 je ne comprends pas ce qu'il se passe lorsque   "d->action(value);" (ligne 43) s'exécute. Juste avant on a value = 2 et l 'attribut static 'a' de la class B = 4. Pourquoi est ce que c'est la méthode 'action' de la classe B qui est utilisée (et pas celle de la classe A) alors que d pointe sur un A ?

Merci pour votre aide.

In reply to Lucas Antoine Reymond

Re: Examen 2019 Question 4

by Fares Ahmed -

L'objet d est un pointeur sur A et la méthode action() est virtuelle, l'appel d->action(value) est donc polymorphique.

Étant donné que la variable d stocke un pointeur sur un objet de type C mais que cette classe ne redéfinit pas cette méthode, c'est la méthode B::action() qui finit par être appelée étant donné que c'est celle avec la portée la plus courte (règles de résolution de portée).


Est-ce plus clair ?