Funkcja zaprzyjaźniona – funkcja, która ma dostęp do prywatnych składników klasy.

Właściwości Nie jest ważne w którym miejscu klasy (private, protected, public) zostanie przyjaźń zadeklarowana. Przyjaźnie danej klasy są stosunkowo ważne z punktu widzenia projektanta, stąd też deklaracje przyjaźni zaleca się deklarować na samym początku deklaracji klasy. Przyjaźń nie jest dziedziczona. Gdy istnieje wiele przeciążonych funkcji, funkcją zaprzyjaźnioną klasy jest tylko ta funkcja, która ma zgodną listę argumentów z zadeklarowaną funkcją zaprzyjaźnioną. Funkcja może być przyjacielem wielu klas. Funkcją zaprzyjaźnioną może być zarówno funkcja globalna, jak i funkcja składowa innej klasy. Funkcja zaprzyjaźniona nie jest składnikiem klasy, która deklaruje przyjaźń.

Przykład w C++ Dana jest klasa K, funkcja void fun( K& ) która modyfikuje prywatny składnik x obiektu klasy K, oraz klasa Y która ma funkcję składową void Y::fun( K& ) która również modyfikuje prywatny składnik x obiektu klasy K. (brak definicji klasy Y, dla prostoty przykładu) Aby funkcje te mogły modyfikować prywatny składnik x, można go oznaczyć jako publiczny(public), ale wtedy składnik x mogłaby modyfikować każda inna funkcja. Aby zatem pozwolić modyfikować składnik x tylko wybranej/wybranym funkcjom należy jednoznacznie określić którym przez dodanie słowa friend na początku definicji funkcji: class K { //poprzez domniemanie jest private: friend void fun( K& ); // deklaracja przyjaźni friend void Y::fun( K& ); // deklaracja przyjaźni funkcji składowej klasy 'Y' int x;

void fun( K& obiekt ) { obiekt.x = 12; // nie byłoby możliwe to przypisanie bez określenia przyjaźni cout << obiekt.x;

Zobacz też klasa zaprzyjaźniona podprogram procedura

Kategoria:Programowanie obiektowe