Dzisiaj jest 25 stycznia 2025 r.
Chcę dodać własny artykuł
Reklama

Funkcja zaprzyjaźniona

Chcę dodać własny artykuł

Funkcja zaprzyjaźniona

Funkcja zaprzyjaźniona to rodzaj funkcji, która ma dostęp do prywatnych składników klasy. Poniżej przedstawione są kluczowe właściwości tej funkcji.

Właściwości funkcji zaprzyjaźnionej

  • Przyjaźń może być zadeklarowana w dowolnym miejscu klasy i jest istotna z perspektywy projektanta. Zaleca się umieszczanie deklaracji przyjaźni na początku definicji klasy.
  • Przyjaźń nie jest dziedziczona przez klasy pochodne.
  • W przypadku wielu przeciążonych funkcji, tylko ta, która ma zgodną listę argumentów, może być uznana za funkcję zaprzyjaźnioną.
  • Funkcja zaprzyjaźniona może być przyjacielem wielu klas.
  • Może być zarówno funkcją globalną, jak i funkcją składową innej klasy.
  • Nie jest składnikiem klasy, która deklaruje przyjaźń.

Przykład w C++

Rozważmy następujący przykład:

Klasa K zawiera prywatny składnik x i dwie funkcje: jedną globalną void fun(K&) oraz funkcję składową void Y::fun(K&) z klasy Y. Obie funkcje mają za zadanie modyfikować składnik x.

Aby umożliwić im dostęp do prywatnego składnika, należy zadeklarować je jako przyjaciół klasy K poprzez użycie słowa kluczowego friend:


class K {
// domyślnie składnik jest private:
friend void fun(K&); // deklaracja przyjaźni
friend void Y::fun(K&); // deklaracja przyjaźni dla funkcji składowej klasy 'Y’
int x;
};
void fun(K& obiekt) {
obiekt.x = 12; // przypisanie możliwe dzięki deklaracji przyjaźni
cout << obiekt.x; }

Bez deklaracji przyjaźni, modyfikacja prywatnego składnika x byłaby niedozwolona. Dzięki temu mechanizmowi można precyzyjnie kontrolować dostęp do prywatnych elementów klasy.