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

Funkcja zaprzyjaźniona

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.

Reklama

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.

Reklama

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.

Reklama
Reklama