INF.04 · pytanie 613
Które z poniższych zdań najlepiej określa funkcję zaprzyjaźnioną w ramach klasy?
- AFunkcja, która ma dostęp do prywatnych pól i metod klasy, z którą jest zaprzyjaźnionaPoprawna
- BFunkcja, która jest statyczna i nie ma możliwości modyfikacji pól klasy
- CFunkcja, która uruchamia się automatycznie po stworzeniu obiektu
- DFunkcja, która pozwala na dziedziczenie wielokrotne
Wyjaśnienie
Funkcja zaprzyjaźniona (ang. friend function) to funkcja, która ma dostęp do prywatnych i chronionych pól oraz metod klasy, mimo że nie jest jej częścią. Służy do realizacji operacji wymagających bezpośredniego dostępu do wewnętrznych elementów klasy, ale bez naruszania zasad hermetyzacji. Przykład w C++: `class Konto { private: double saldo; friend void wyswietlSaldo(Konto k); }`. Funkcja `wyswietlSaldo` może odczytać pole `saldo`, mimo że jest ono prywatne. Funkcje zaprzyjaźnione są używane, gdy konieczna jest bliska współpraca między klasami lub funkcjami, ale nie chcemy nadmiernie otwierać interfejsu klasy.