Question sur accès protégé

Question sur accès protégé

by Lucas Antoine Reymond -
Number of replies: 1

Bonjour,

J'ai une question sur un exemple d'une vidéo du MOOC sur un accès protégé (vidéo Droit protégé, semaine 4 Héritage).

Pourquoi est ce qu'il est interdit de faire     a+=autreA.a;   à la fin ?

Dans la vidéo c'est expliqué que c'est parce qu'on essaye d'accéder à un objet protégé (le a) depuis un objet de type A.  Est ce que les champs qui sont marqués protected dans la classe A ne sont pas accessible depuis A ?

Merci  pour votre réponse.

Attachment accès_protégé.png
In reply to Lucas Antoine Reymond

Re: Question sur accès protégé

by Sepand Kashani -

Il s'agit d'une subtilité de l'accès protégé. D'après la spécification C++:

Protected members form the interface of a class to its derived classes (which is distinct from the public interface of the class).
A protected member of a class is only accessible
1) to the members and friends of that class;
2) to the members of any derived class of that class, but only when the class of the object through which the protected member is accessed is that derived class or a derived class of that derived class.
 

Donc selon 2), 'a += autreA.a' n'est pas un appel permis.

[Raison (Avancé): si cette opération était permise, alors il serait possible de modifier d'autres classes qui hériteraient potentiellement de 'A'.]