Różnica między funkcją znajomego a klasą znajomego

Autor: Laura McKinney
Data Utworzenia: 1 Kwiecień 2021
Data Aktualizacji: 13 Móc 2024
Anonim
Różnica między funkcją znajomego a klasą znajomego - Technologia
Różnica między funkcją znajomego a klasą znajomego - Technologia

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.


    1. Wykres porównania
    2. Definicja
    3. Kluczowe różnice
    4. Wniosek

Wykres porównania

Podstawa do porównaniaFunkcja przyjacielaKlasa przyjaciela
PodstawowyJest 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 deklaracjiMusi 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ć using namespace std; klasa pierwsza {int data; public: first (int i): data (i) {} przyjaciel void display (const first & a); }; void display (const first & a) {cout << "data =" <using namespace std; klasa pierwsza {// Deklaruj przyjaciela klasa przyjaciela klasa druga; public: First (): a (0) {} void () {cout << ”Wynikiem jest„ << a << endl; } private: int a; }; klasa druga {public: void change (First & yclass, int x) {yclass.a = x; }}; int main () First obj1; Drugi obj2; obj1. (); obj2.change (obj1, 5); obj1. (); // Dane wyjściowe Wynik wynosi 0 Wynik wynosi 5

  1. Funkcja znajomego jest funkcją, która ma dostęp do prywatnych i chronionych członków klasy. Natomiast klasa przyjaciół to klasa, która pomaga w dostępie do prywatnych członków klasy.
  2. Funkcja znajomego jest zadeklarowana poprzez włączenie jej prototypu do klasy, poprzedzając ją słowem kluczowym friend. Podobnie, klasa znajomego jest również definiowana za pomocą słowa kluczowego friend.
  3. Deklaracja przekazywania jest używana w przypadku funkcji przyjaciela w przeciwieństwie do, nie jest konieczne używanie go w klasie przyjaciela.

Wniosek

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.