Razlika između funkcije prijatelja i klase prijatelja

Autor: Laura McKinney
Datum Stvaranja: 1 Travanj 2021
Datum Ažuriranja: 11 Svibanj 2024
Anonim
C++ Tutorial 18: Prijateljske funkcije
Video: C++ Tutorial 18: Prijateljske funkcije

Sadržaj


Funkcija Prijatelj i prijatelj klasa su tehnike koje se koriste za pristup privatnim članovima klase pomoću ključne riječi prijatelj. Uobičajena razlika između funkcije prijatelja i klase prijatelja je da kada se koristi funkcija prijatelja, članovima privatne klase može se pristupiti, ali u prijateljskoj klasi, pristupaju se samo imenima klase prijatelja, a ne privatni članovi klase.

značajka prijatelja bez obzira koristi li se funkcija ili klasa, može negativno utjecati na objektno orijentirani okvir jer slabi ovijanje što je protiv objektno orijentirano paradigma. To je razlog zbog kojeg se značajka prijatelja mora mudro koristiti i inače bi mogla pauza skrivanje podataka koda.

Ova značajka prijatelja nije ni jedno ni drugo zamjenski i ni prijelazan, X je Y-ov prijatelj, ne zaključuje da je Y također Y-ov prijatelj. Ako je X prijatelj Y, a Y je prijatelj Z-a, ne znači da je X prijatelj Z-a.


    1. Usporedni grafikon
    2. definicija
    3. Ključne razlike
    4. Zaključak

Usporedni grafikon

Osnove za usporedbuFunkcija prijateljaPrijateljska klasa
Osnovni, temeljniTo je funkcija koja se koristi ključnom riječju prijatelja da bi se dodijelilo funkciji nečlanice privatnim članovima klase.To je klasa koja se koristi s ključnom riječju prijatelja za pristup privatnim članovima druge klase.
Proslijeđivanje deklaracijeMora se koristiti.Nije obavezno.
KoristitiPrijateljska funkcija može se koristiti u nekim slučajevima preopterećenja rukovaoca.Klasa prijatelja može se koristiti kada se klasa stvori na vrhu druge klase.

Definicija funkcije prijatelja

funkcija prijatelja koristi se za pristup privatnim i zaštićenim članovima klase dopuštajući funkciji nečlanu da ostvari pristup. U ovoj vrsti funkcije koristi se ključna riječ prijatelj prije naziva funkcije u vrijeme deklaracije. Za funkciju prijatelja primjenjuju se neki restriktivni uvjeti. Prvi je uvjet da dječja klasa ne nasljeđuje funkciju prijatelja. Drugi je uvjet da specifikator klase skladišta možda nije prisutan u funkciji prijatelja, što znači da se ne može deklarirati kao statična i vanjska.


Funkcija friend se ne poziva sa pozvanim objektom klase. Primjeri funkcije prijatelja su: globalna funkcija, funkcija člana klase, predložak funkcije može biti funkcija prijatelja. Shvatimo to uz pomoć primjera.

#include pomoću namespace std; klasa prva {int podataka; javno: prvo (int i): podaci (i) {} prikaz nevaljanja prijatelja (const first & a); }; nevažeći prikaz (const first & a) {cout << "data =" <koristeći namespace std; class first {// Proglasite prijatelja class class class Second; public: First (): a (0) {} void () {cout << "Rezultat je" << a << endl; } privatno: int a; }; klasa Druga {javna: nevaljana promjena (First & yclass, int x) {yclass.a = x; }}; int main () Prvo obj1; Drugi obj2; obj1 (). obj2.change (obj1, 5); obj1 (). // Izlaz Rezultat je 0 Rezultat je 5

  1. Friend funkcija je funkcija koja može pristupiti privatnim i zaštićenim članovima klase. Suprotno tome, prijateljska klasa je klasa koja pomaže u pristupu privatnim članovima klase.
  2. Prijateljska funkcija deklarirana je uključivanjem njenog prototipa unutar klase, dodavanjem ključne riječi friend. Slično tome, klasa prijatelja je također definirana pomoću ključne riječi friend.
  3. Naprijed deklaracija koristi se u slučaju funkcije prijatelja nasuprot, nije je potrebno koristiti u prijateljskoj klasi.

Zaključak

Funkcija prijatelja potrebna je kada funkcija treba pristupiti dvijema ili više nezavisnih klasa, unutarnjim članovima. S druge strane, prijateljska klasa je potrebna kad klasa zahtijeva pristup pripadnicima druge klase. Kada funkciji više članova treba biti prijatelj te funkcije, u tom slučaju, bolje je koristiti klasu prijatelja.