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;
}
};