class Y {};
class A {
int data; // private data member
class B { }; // private nested type
enum { a = 100 }; // private enumerator
friend class X; // friend class forward declaration (elaborated class specifier)
friend Y; // friend class declaration (simple type specifier) (since c++11)
};
class X : A::B { // OK: A::B accessible to friend
A::B mx; // OK: A::B accessible to member of friend
class Y {
A::B my; // OK: A::B accessible to nested member of friend
};
int v[A::a]; // OK: A::a accessible to member of friend
};
ce n'est pas la première fois que je le vois ainsi. Or d'habitude, il y a le mot-clé public , ou private, ou après le ":" d'où le fait que j'ai besoin de comprendre.
Cela veut-il dire que la classe de gauche donne son amitié à cette à droite du " : " et donc que celle à droite du ":" a accès à tous les membres de celle de gauche ?
Merci par avance pour vos explications
- Edité par pseudo-simple 7 juillet 2019 à 12:49:05
le :indique ici un héritage. Habituellement on précise le type d'héritage : - public : la conversion de Derivee& vers Base& est implicite et tous les champs public de la Base sont public de la dérivée, et ceux protected de la Base sont protected de la dérivée. - privé : la conversion de Derivee& vers Base& n'est plus possible, et tous les champs public et protected de la Base sont private dans la Derivee (dans ce cas ça n'est plus vraiment un héritage.) - protected : jamais vu une quelconque utilisation!
Si le type d'accès n'est pas indiqué, alors pour une class c'est équivalent à avoir écrit private (donc un 'faux' héritage.) et pour nue struct c'est équivalent à avoir écrit public.
Maintenant pour en revenir à la page sur friend que tu cherches à comprendre. Quand ils écrivent :
class X : A::B { // OK: A::B accessible to friend
Ils veulent indiquer que X a le droit d'hériter de A::B bien que B soit privé dans A parce que X est ami de A. S'il ne l'était pas il n'aurait aucun accès possible à A::B et ne pourrait pas en hériter. Leur commentaire ne décrit qu'une simple évidence! (les autres par contre sont intéressant à comprendre.)
YES, man a écrit:
Cela veut-il dire que la classe de gauche donne son amitié à cette à droite du " : " et donc que celle à droite du ":" a accès à tous les membres de celle de gauche ?
En recherche d'emploi.
Discord NaN. Mon site.