wake-up-neo.com

Friend-Erklärung in C++ - Unterschied zwischen öffentlich und privat

Jemand sagte mir, dass es einen Unterschied gibt, ob man eine Freundesklasse in den öffentlichen oder privaten Bereichen der Klasse deklariert, aber ich kann scheinbar nichts online dazu finden und ich bin nicht sicher, ob sie wussten, worüber sie sprachen. 

Ich meine den Unterschied zwischen:

class A
{
 public: 
      friend class B;
 };

und

class A
{
 private: //or nothing as the default is private
      friend class B;
 };

Ist da ein Unterschied?

116
BIU

Nein, es gibt keinen Unterschied - Sie sagen nur, dass die Klasse B ein Freund der Klasse A ist und jetzt auf ihre privaten und geschützten Mitglieder zugreifen kann.

120
sharptooth

Da die Syntax friend class B kein member der Klasse A deklariert, es ist also egal, wo Sie es schreiben, ist Klasse B ein Freund der Klasse A

Wenn Sie friend class B in den protected-Abschnitt von A schreiben, bedeutet dies NICHT, dass B nur auf protected und public-Mitglieder von A zugreifen kann. 

Denken Sie immer daran, dass, sobald B ein Freund von A ist, auf any member von A zugegriffen werden kann, unabhängig davon, in welchem ​​Abschnitt Sie friend class B schreiben.

33
Nawaz

Die Friend-Deklaration wird in einem Klassenhauptteil angezeigt und gewährt privaten oder geschützten Mitgliedern der Klasse, in der die Friend-Deklaration erscheint, einer Funktion oder einer anderen Klasse Zugriff. 

Aus diesem Grund haben Zugriffsberechtigte keine Auswirkung auf die Bedeutung von Friend-Deklarationen (sie können in privaten: oder in öffentlichen: Abschnitten ohne Unterschied erscheinen).

0
goyuiitv