Funcții prieten în C++ și caz de utilizare cu exemple

Publicat: 2022-10-22

Ascunderea datelor este o tehnică fundamentală de dezvoltare software utilizată pe scară largă în limbajele de programare orientate pe obiecte (OOP). Limitează accesul la membrii datelor private din afara clasei. Cu toate acestea, o caracteristică C++ cunoscută sub numele de funcția friend contravine principiului de ascundere a datelor.

În acest articol, veți afla ce este funcția friend în C++ , ce este o clasă prieten și veți explora câteva cazuri de utilizare cu exemple.

Consultați cursurile noastre gratuite de tehnologie pentru a obține un avantaj față de concurență.

Cuprins

Care este funcția friend în C++?

O funcție prietenă în C++ este o funcție declarată în afara unei clase, dar are acces la membrii privați și protejați ai clasei. Deși membrii privați ai unei anumite clase sunt inaccesibili pentru funcțiile non-membre, declararea acestora ca funcții prietene le oferă acces la membrii privați și protejați ai claselor.

Consultați Certificarea avansată upGrad în DevOps

Caracteristicile Funcției Prieten

Funcția friend în C++ are următoarele caracteristici:

  • Funcția prieten este în afara domeniului de aplicare al clasei pentru care a fost declarată prietenă
  • O funcție prieten poate fi fie un membru al unei clase, fie o funcție declarată în afara domeniului de aplicare al clasei
  • Funcționalitatea prieten nu este limitată la o singură clasă.

Explorați cursurile noastre populare de inginerie software

Master în Informatică de la LJMU și IIITB Programul de certificat de securitate cibernetică Caltech CTME
Bootcamp pentru dezvoltare completă Programul PG în Blockchain
Program Executive PG în Full Stack Development
Vezi mai jos toate cursurile noastre
Cursuri de Inginerie Software

  • Invocarea unei funcții prieten este ca și cum ați invoca orice funcție normală a clasei fără a utiliza obiectul
  • Nu putem invoca funcția prieten folosind obiectul, deoarece nu este în domeniul de aplicare al clasei
  • Funcțiile prieten din C++ au obiecte ca argumente
  • Putem declara o funcție de prieten fie în partea privată, fie în partea publică
  • Numele membrilor nu sunt direct accesibile unei funcții prieten și trebuie să folosească operatorul de apartenență punct și numele obiectului cu numele membrului

Consultați Certificarea avansată în securitate cibernetică de la upGrad

Sintaxa funcției prieten

Pentru a declara funcția friend, folosim cuvântul cheie friend în corpul clasei. Sintaxa funcției prieten este:

clasa className {

… .. …

prieten returnType functionName(arg list);

… .. …

}

Abilități de dezvoltare software la cerere

Cursuri JavaScript Cursuri de bază Java Cursuri de Structuri de Date
Cursuri Node.js Cursuri SQL Cursuri de dezvoltare full stack
Cursuri NFT Cursuri DevOps Cursuri de Big Data
Cursuri React.js Cursuri de securitate cibernetică Cursuri de cloud computing
Cursuri de proiectare baze de date Cursuri Python Cursuri de criptomonede

Dacă descompunem sintaxa, iată ce înseamnă fiecare termen:

  • prieten este cuvântul cheie care indică faptul că funcția este o funcție prieten
  • returnType este tipul de returnare al funcției
  • functionName este numele funcției care a devenit prieten cu clasa
  • arg list sunt argumentele pe care le vom transmite

Învață cursuri de dezvoltare software online de la cele mai bune universități din lume. Câștigați programe Executive PG, programe avansate de certificat sau programe de master pentru a vă accelera cariera.

Exemplu de funcție C++ Friend

Acum, să ne uităm la câteva programe pentru a ilustra funcția prieten.

Exemplul 1: funcția C++ friend pentru a imprima înălțimea unei casete

#include <iostream>

folosind namespace std;

Class Box

{

privat:

int inaltime;

public:

Casetă (): înălțime (0) { }

friend int printHeight(Box); //funcția prieten

};

int printHeight (caseta h)

{

h.inaltime += 40;

întoarcere h.înălțime;

}

int main()

{

caseta h;

cout<<“Înălțimea casetei: „<< printHeight(h)<<endl;

returnează 0;

}

Citiți articolele noastre populare legate de dezvoltarea software

Cum se implementează abstracția datelor în Java? Ce este Inner Class în Java? Identificatori Java: definiție, sintaxă și exemple
Înțelegerea încapsulării în OOPS cu exemple Argumentele liniei de comandă în C explicate Top 10 caracteristici și caracteristici ale cloud computing-ului în 2022
Polimorfismul în Java: concepte, tipuri, caracteristici și exemple Pachete în Java și cum să le folosiți? Tutorial Git pentru începători: Învață Git de la zero

Ieșire:

Inaltime cutie: 40

Exemplul 2: Când funcția C++ prieten este prietenoasă cu două clase

#include <iostream>

folosind namespace std;

// declarație înainte

clasa ClassQ;

clasa ClassP {

public:

// constructor pentru a inițializa numP la ​​12

ClassP(): numP(12) {}

privat:

int numP;

// declarația funcției prieten

friend int add(ClassP, ClassQ);

};

clasa ClassQ {

public:

// constructor pentru a inițializa numQ la 1

ClassQ(): numQ(1) {}

privat:

int numQ;

// declarația funcției prieten

friend int add(ClassP, ClassQ);

};

// accesează membrii ambelor clase

int add(ClassP obiectP, ClassQ obiectQ) {

return (obiectP.numP + obiectQ.numQ);

}

int main() {

ClasaP obiectP;

ClassQ objectQ;

cout << „Suma: ” << add(objectP, objectQ);

returnează 0;

}

Ieșire:

Suma:13

În exemplul de mai sus, Clasa P și Clasa Q au declarat add() ca funcție prieten, oferindu-i acces la datele private ale ambelor clase. Mai mult, funcția prieten din clasa P folosește clasa Q.

Deci, facem o declarație înainte a clasei Q în program.

Implementarea unei funcții de prieten

Pentru a ne face o idee mai bună despre funcția friend în C++, ne vom uita acum la cele două moduri prin care putem implementa funcția friend.

  1. Implementarea unei funcții prieten în C++ printr-o metodă din altă clasă

Declarăm o clasă prietenă în C++ atunci când avem nevoie de acces la membrii privați și protejați ai unei alte clase în care a fost declarată prietenă. De asemenea, este posibil să declarați ca prieten o funcție membru unic al unei alte clase.

clasa class_name

{

friend class friend_class;// se declară friend class

};

clasa friend_class

{

};

În declarația de mai sus a clasei friend, toate funcțiile din friend_class sunt funcțiile friend ale class_name .

Iată un exemplu simplu pentru a ilustra implementarea funcțiilor prieten printr-o metodă din altă clasă:

#include <iostream>

folosind namespace std;

clasa a

{

int p=4;

prieten clasa B; //clasa de prieteni

};

clasa B

{

public:

afișare nulă (A &a)

{

cout<<”Valoarea lui p este:” <<ap;

}

};

int main ()

{

A a;

B b;

  1. afișaj (a);

returnează 0;

}

Ieșire:

Valoarea lui p este:4

  1. Implementarea unei funcții globale

Implementarea unei funcții de prieten global ne permite să accesăm toți membrii protejați și privați ai declarației globale de clasă. Iată un exemplu:

#include<iostream>

folosind namespace std;

spatiu de clasa

{

int a;

int b;

int c;

public:

void setdata (int x, int y, int z);

void display(void);

friend void operator- (spațiu &s);

};

void space ::setdata (int x, int y, int z)

{

a=x; b=y; c=z;

}

void space::display(void)

{

cout<<a<<” „<<b<<” „<<c<<“\n”;

}

operator void- (spațiu și e)

{

sa =- sa;

sb =- sb;

sc =- sc;

}

int main ()

{

spațiu s;

  1. setdate (9,2,3);

cout<<“s:”;

  1. afișaj ();

-s;

cout<<“-s:”;

  1. afișaj ();

returnează 0;

}

Ieșire:

s: 9 2 3

-s: -9 -2 -3

În programul exemplu de mai sus, operator- este funcția prieten pe care am declarat-o global în domeniul de aplicare al clasei.

Ce este friend class în C++?

Deși este destul de evident până acum, o clasă prieten este o clasă care are acces atât la membrii privați, cât și la membrii protejați ai clasei în care este declarat prieten.

În termeni simpli, o clasă prietenă în C++ este folosită atunci când dorim ca o clasă să aibă acces la membrii privați și protejați ai altei clase.

Funcțiile membre ale clasei pe care le declarăm ca prieten pentru o altă clasă sunt funcții prietene pentru clasa prieten. Astfel, funcțiile prieten leagă ambele clase.

Sintaxa clasei Friend

Iată sintaxa unei clase prieten în C++:

clasa R; //forward declaration

clasa P{

// Alte declarații

prieten clasa R;

};

clasa R{

// Declarații

};

În ilustrația de mai sus, clasa R este un prieten al clasei P. Prin urmare, clasa R poate accesa membrii de date private ai clasei P. Cu toate acestea, inversul nu este adevărat și clasa P nu poate accesa datele private membrilor clasei R. .

De asemenea, declarația forward este dată pentru a informa compilatorul despre existența unei entități înainte ca aceasta să fie definită categoric. Aici, declarăm Clasa R folosind declarația forward pentru a notifica compilatorului existența acesteia. Declarația forward ne permite să folosim obiectele clasei R din clasa P.

La ce folosește funcția friend în C++?

Rezumând discuția noastră, să ne uităm la cele două utilizări principale ale funcției prieten în C++:

  • În primul rând, folosim funcția friend atunci când dorim să accesăm membrii privați și protejați ai unei clase. Pentru a face acest lucru, am solicita, în general, obiectelor acelei clase să acceseze membrii privați și protejați. Cu toate acestea, funcția prieten elimină situația în care funcția trebuie să fie un membru al clasei pentru a obține acces.
  • O altă utilizare a funcției friend în C++ este supraîncărcarea operatorului. Funcțiile care au același nume, dar numere și argumente diferite sunt cunoscute ca funcții de supraîncărcare. Funcțiile prieten din C++ găsesc utilizare în supraîncărcarea operatorului.

În acest caz, funcția de supraîncărcare a operatorului precede cuvântul cheie prieten și declară domeniul de aplicare al clasei de funcție. Când sunt supraîncărcați de funcția prieten, operatorii binari iau două argumente explicite, în timp ce operatorii unari iau un argument. Funcționează în același mod ca o funcție de operator binar, cu excepția faptului că implementarea funcției de operator prieten are loc în afara domeniului de aplicare al clasei.

Asta ne duce la sfârșitul discuției noastre despre funcția friend în C++ și utilizările acesteia. Sper că acest lucru vă va ajuta să vă îmbunătățiți cunoștințele despre C++.

De asemenea, dacă doriți să vă lansați cariera ca dezvoltator full-stack, upGrad oferă un program executiv post-universitar complet online în dezvoltare software – Specializare în dezvoltare full-stack de 13 luni în colaborare cu IIIT Bangalore.

Repere ale programului:

  • Expunere practică la studii de caz și sarcini relevante pentru industrie
  • Peste 450 de ore de învățare la 360 de grade
  • Peste 10 instrumente și limbaje de programare de top
  • 1:1 Sesiuni de mentorat în carieră cu mentori din industrie
  • Asistență pentru studenți 24/7

Înscrieți-vă astăzi pentru a obține beneficiile exclusive upGrad astăzi!

Care este funcția friend în C++?

O funcție prieten în C++ este o funcție care nu este membru al unei clase, dar are acces la membrii săi privați și protejați.

Cum declari funcția de prieten?

O funcție prieten are acces la datele private și protejate ale unei clase. Pentru a declara o funcție prieten, folosim cuvântul cheie prieten în corpul clasei.

Cum îți faci un prieten de clasă în C++?

Folosim cuvântul cheie prieten pentru a declara o clasă ca o clasă prietenă în C++. Cuvântul cheie permite oricărei clase să acceseze membrii privați și protejați ai altor clase și funcții.