Doporučená, 2021

Redakce Choice

Rozdíl mezi funkcí přítele a třídou přátel

Funkce Přítel a třída přátel jsou techniky používané pro přístup k soukromým členům třídy pomocí klíčového slova přítele. Společným rozdílem mezi funkcí přítele a třídou přátel je, že když je použita funkce přátel, mohou být přistupováni k soukromým členům třídy, ale ve třídě přátel jsou přístupná pouze jména třídy přátel, nikoli soukromí členové třídy.

Funkce přítele, ať už používaná funkcí nebo třídou, může negativně ovlivnit objektově orientovaný rámec, protože oslabuje zapouzdření, které je proti objektově orientovanému paradigmatu. To je důvod, proč musí být funkce přítele použita moudře, jinak by mohlo dojít k porušení datového úkrytu kódu.

Tato funkce přítele není komutativní ani tranzitivní . X je přítel Y nevyvodí, že Y je také přítel X. Pokud X je přítel Y a Y je přítel Z, neznamená, že X je přítel Z.

Srovnávací graf

Základ pro srovnáníFunkce příteleTřída přátel
ZákladníJe to funkce používaná s klíčovým slovem přítele, která uděluje nečlenským funkcím přístup soukromým členům třídy.Jedná se o třídu používanou s klíčovým slovem přítele pro přístup k soukromým členům jiné třídy.
Předběžná deklaraceMusí být použito.Nepovinné.
PoužitíV některých situacích přetížení obsluhy lze použít funkci přátel.Třídu přátel lze použít, když je třída vytvořena na vrcholu jiné třídy.

Definice funkce přítele

Funkce přátel se používá pro přístup k soukromým a chráněným členům třídy povolením přístupu nečlenské funkce. V tomto typu funkce se klíčové slovo přítele používá před názvem funkce v době deklarace. Tam jsou některé omezující podmínky aplikované na funkci přítele. První podmínkou je, že funkce přítele není zděděna třídou dětí. Druhou podmínkou je, že specifikátor třídy úložiště nemusí být přítomen ve funkci přítele, což znamená, že nemůže být deklarován jako statický a extern.

Funkce přítele není volána s vyvolávajícím objektem třídy. Příklady funkce přátel jsou: globální funkce, členská funkce třídy, funkční šablona může být funkce přátel. Pochopme to s pomocí příkladu.

 #include using namespace std; třída první {int data; public: first (int i): data (i) {} přítel void display (const first a a); }; void display (const first & a) {cout << "data =" < 

Definice třídy přátel

Podobně jako funkce přítele můžeme jednu třídu označit za přítele jiné třídy, která je označována jako třída přátel . Takže třída přátel může získat přístup k soukromým členům definovaným v jiné třídě. Je důležité si uvědomit, že třída přátel může přistupovat pouze k názvům definovaným v rámci jiné třídy místo zdědění jiné třídy. Členové první třídy se nemohou stát členy třídy přátel. Tyto třídy přátel se používají jen zřídka.

Třída přátel může být deklarována ve více než jedné třídě. Považuje se to za krátkou alternativní metodu pro funkci kamaráda, protože pomocí ní můžeme vytvořit třídu přátel, která bude mít přístup k celému datovému členu a funkci namísto vytváření více funkcí přátel.

 #include using namespace std; class First {// Deklarovat přítele třídy přítele class; public: First (): a (0) {} void print () {cout << "Výsledkem je" << a << endl; } private: int a; }; class Second {public: void change (První a yclass, int x) {yclass.a = x; }}; int main () // Output Výsledek je 0 Výsledek je 5 

Klíčové rozdíly mezi funkcí přítele a třídou přátel

  1. Funkce Friend je funkce, která umožňuje přístup k soukromým a chráněným členům třídy. Třída přátel je naopak třída, která pomáhá při přístupu k soukromým členům třídy.
  2. Funkce přítele je deklarována zahrnutím jeho prototypu do třídy, antecede s klíčovým přítelem. Podobně je třída přátel definována také pomocí klíčového přítele.
  3. Prohlášení o forwardu se používá v případě přátelské funkce proti, není nutné jej používat ve třídě přátel.

Závěr

Funkce přátel je vyžadována, když funkce potřebuje přístup ke dvěma nebo více nezávislým třídám, interním členům. Třída přátel je naopak potřebná, pokud třída vyžaduje přístup ke členům jiné třídy. Když funkce více členů musí být přítelem této funkce, v tomto případě je lepší použít třídu přátel.

Top