Różnica między funkcją znajomego a klasą znajomego
Zawartość
Funkcja znajomego i klasa przyjaciela to techniki używane do uzyskiwania dostępu do prywatnych członków klasy za pomocą słowa kluczowego znajomego. Wspólna różnica między funkcją przyjaciela a klasą przyjaciela polega na tym, że gdy używana jest funkcja przyjaciela, dostęp do członków klasy prywatnej jest możliwy, ale w klasie przyjaciela dostępne są tylko nazwy klasy przyjaciela, a nie członkowie prywatni klasy.
The funkcja przyjaciela czy używane przez funkcję lub klasę może mieć negatywny wpływ na strukturę obiektową, ponieważ osłabia ona kapsułkowanie co jest przeciwko obiektowy paradygmat. To jest powód, dla którego funkcja znajomego musi być używana mądrze, w przeciwnym razie mogłaby złamać ukrywanie danych kodu.
Ta funkcja znajomego nie jest przemienny i ani przechodni. X jest przyjacielem Y, nie wnioskuje, że Y jest także przyjacielem X. Jeśli X jest przyjacielem Y, a Y jest przyjacielem Z, nie oznacza to, że X jest przyjacielem Z.
-
- Wykres porównania
- Definicja
- Kluczowe różnice
- Wniosek
Wykres porównania
Podstawa do porównania | Funkcja przyjaciela | Klasa przyjaciela |
---|---|---|
Podstawowy | Jest to funkcja używana ze słowem kluczowym „przyjaciel”, aby przyznać dostęp do funkcji niebędącej członkiem prywatnym członkom klasy. | Jest to klasa używana ze słowem kluczowym znajomego w celu uzyskania dostępu do prywatnych członków innej klasy. |
Przekazanie deklaracji | Musi być użyte. | Nie obowiązkowe |
Posługiwać się | W niektórych sytuacjach przeciążenia operatora można zastosować funkcję przyjaciela. | Klasy znajomych można użyć, gdy klasa zostanie utworzona na szczycie innej klasy. |
Definicja funkcji przyjaciela
The funkcja przyjaciela służy do uzyskiwania dostępu do prywatnych i chronionych członków klasy, zezwalając na uzyskanie dostępu przez funkcję nie będącą członkiem. W tego typu funkcji słowo kluczowe znajomego jest używane przed nazwą funkcji w momencie deklaracji. Istnieją pewne restrykcyjne warunki dotyczące funkcji przyjaciela. Pierwszym warunkiem jest to, że funkcja przyjaciela nie jest dziedziczona przez klasę potomną. Drugim warunkiem jest to, że specyfikator klasy pamięci może nie występować w funkcji przyjaciela, co oznacza, że nie można go zadeklarować jako statyczny i zewnętrzny.
Funkcja znajomego nie jest wywoływana z wywołującym obiektem klasy. Przykłady funkcji przyjaciela to: funkcja globalna, funkcja członka klasy, szablon funkcji może być funkcją przyjaciela. Rozumiemy to na przykładzie.
#zawierać Funkcja przyjaciela jest wymagana, gdy funkcja musi uzyskać dostęp do dwóch lub więcej niezależnych klas, członków wewnętrznych. Z drugiej strony klasa przyjaciela jest potrzebna, gdy klasa wymaga dostępu do członków innej klasy. Gdy funkcja wielu członków musi być przyjacielem tej funkcji, w takim przypadku lepiej jest użyć klasy znajomego.
Wniosek