Klasa zaprzyjaźniona

Klasa zaprzyjaźniona – klasa, która ma dostęp do prywatnych i chronionych składników danej klasy, a konkretniej: której funkcje składowe (metody) mają dostęp do prywatnych i chronionych składników danej klasy. Przyjaźń deklaruje zawsze klasa, która chce by inna klasa miała dostęp do jej składników prywatnych - nigdy na odwrót.

Właściwości edytuj

  • Nieistotne jest, gdzie (private, protected, public) zadeklaruje się przyjaźń. Przyjaźnie danej klasy są stosunkowo ważne z punktu widzenia projektanta, dlatego, w celu przejrzystości kodu dobrze jest zrobić to na samym początku deklaracji klasy.
  • Klasa może być przyjacielem wielu klas.
  • Klasa może mieć wielu przyjaciół (zarówno klasy jak i funkcje).
  • Przyjaźń nie jest przechodnia. Oznacza to, że gdy klasa C jest przyjacielem klasy B, a klasa B jest przyjacielem klasy A, to nie oznacza to, że klasa C jest przyjacielem klasy A (przyjaciel mojego przyjaciela nie musi być moim przyjacielem).
  • Przyjaźń nie jest dziedziczona.

Przykład w C++ edytuj

 class B; //deklaracja zapowiadająca

 class A {
   friend class B; // deklaracja przyjaźni
   private:
     int x; // zmienna w sekcji prywatnej
 };
 
 class B {
   public:
     void wpiszIks( A& obiekt , const int wartosc ) {
       obiekt.x = wartosc; // niemożliwe bez deklaracji przyjaźni
       return;
     }
 };

Zobacz też edytuj