Odporúčaná, 2024

Redakcia Choice

Rozdiel medzi priateľskou funkciou a triedou priateľov

Funkcia Priateľ a trieda priateľov sú techniky používané na prístup k súkromným členom triedy pomocou kľúčového slova priateľa. Spoločným rozdielom medzi priateľskou funkciou a triedou priateľov je to, že keď sa používa priateľská funkcia, môžu sa pristupovať k členom súkromnej triedy, ale v triede priateľov sa sprístupňujú iba mená triedy priateľov nie súkromným členom triedy.

Priateľský prvok, či sa používa funkcia alebo trieda, môže mať nepriaznivý vplyv na objektovo orientovaný rámec, pretože oslabuje zapuzdrenie, ktoré je proti objektovo orientovanej paradigme. To je dôvod, prečo musí byť funkcia priateľa použitá múdro, inak by mohla narušiť skrytie údajov .

Táto funkcia priateľa nie je ani komutačná ani tranzitívna . X je priateľ Y nevylučuje, že Y je tiež priateľ X. Ak X je priateľ Y a Y je priateľ Z, nezahŕňa, že X je priateľ Z.

Porovnávacia tabuľka

Základ pre porovnanieFunkcia priateľaTrieda priateľov
základnéJe to funkcia používaná s priateľským kľúčovým slovom na udelenie prístupu nečlenskej funkcie súkromným členom triedy.Je to trieda používaná s priateľským kľúčovým slovom na prístup k súkromným členom inej triedy.
Vyhlásenie vopredMusí sa použiť.Nie je povinné.
použitiePriateľská funkcia môže byť použitá v niektorých prípadoch preťaženia operátora.Trieda priateľov sa môže použiť, keď sa trieda vytvorí na vrchole inej triedy.

Definícia funkcie priateľa

Funkcia priateľa sa používa na prístup k súkromným a chráneným členom triedy tým, že umožňuje nečlenskej funkcii získať prístup. V tomto type funkcie sa kľúčové slovo priateľa používa pred názvom funkcie v čase deklarovania. Na funkciu priateľa sa uplatňujú určité obmedzujúce podmienky. Prvá podmienka je, že priateľská funkcia nie je dedičná v triede detí. Druhou podmienkou je, že špecifikátor triedy úložiska nemusí byť prítomný vo funkcii priateľa, čo znamená, že nemôže byť deklarovaný ako statický a externý.

Funkcia priateľa nie je volaná s vyvolávacím objektom triedy. Príklady funkcie priateľa sú: globálna funkcia, členská funkcia triedy, funkčná šablóna môže byť priateľskou funkciou. Poďme tomu rozumieť pomocou príkladu.

 # include using namespace std; prvé triedy {int data; verejné: prvé (int i): dáta (i) {} priateľské neplatné zobrazenie (const prvý & a); }; prázdne zobrazenie (const prvý & a) {cout << "data =" < 

Definícia triedy priateľa

Podobne ako funkcia priateľa, môžeme urobiť jednu triedu ako priateľa inej triedy, ktorá sa označuje ako trieda priateľov . Aby trieda priateľov mohla získať prístup k súkromným členom definovaným v rámci druhej triedy. Je dôležité mať na pamäti, že trieda priateľov môže pristupovať iba k menám definovaným v rámci druhej triedy namiesto toho, aby zdedili inú triedu. Práve členovia prvej triedy sa nemôžu stať členmi priateľskej triedy. Tieto triedy priateľov sú zriedka používané.

Trieda priateľa môže byť deklarovaná vo viac ako jednej triede. Považuje sa to za krátku alternatívnu metódu pre funkciu priateľa, pretože s touto pomocou môžeme vytvoriť triedu priateľov, ktorá môže mať prístup k všetkým údajovým členom a funguje namiesto vytvárania viacerých funkcií priateľov.

 # include using namespace std; trieda First {// Vyhlásenie triedy priateľov triedy priateľov Second; verejné: prvý (): a (0) {} void print () {cout << "Výsledok je << << a << endl; } súkromný: int a; }; trieda druhá {public: void change (prvý a yclass, int x) {yclass.a = x; }}; int main () // Výstup Výsledok je 0 Výsledok je 5 

Kľúčové rozdiely medzi priateľskou funkciou a triedou priateľov

  1. Funkcia priateľa je funkcia, ktorá umožňuje prístup k súkromným a chráneným členom triedy. Na rozdiel od toho, priateľská trieda je trieda, ktorá pomáha pri prístupe k súkromným členom triedy.
  2. Priateľská funkcia je deklarovaná zahrnutím prototypu do triedy, predbežne s pridaným kľúčovým slovom. Podobne je trieda priateľov definovaná tiež pomocou priateľa pre kľúčové slová.
  3. Forwardová deklarácia sa používa v prípade, že funkcia priateľa je proti, nie je potrebné používať v triede priateľov.

záver

Funkcia priateľa je vyžadovaná, keď má funkcia prístup k dvom alebo viacerým nezávislým triedam, interným členom. Na druhej strane je potrebná priateľská trieda, keď trieda vyžaduje prístup k členom inej triedy. Keď je funkcia viacnásobného člena priateľom tejto funkcie, v tomto prípade je lepšie používať triedu priateľov.

Top