Atšķirība starp drauga funkciju un drauga klasi

Autors: Laura McKinney
Radīšanas Datums: 1 Aprīlis 2021
Atjaunināšanas Datums: 5 Maijs 2024
Anonim
Difference between class member function and friend function | friend function and class function
Video: Difference between class member function and friend function | friend function and class function

Saturs


Drauga funkcija un drauga klase ir paņēmieni, kas tiek izmantoti, lai piekļūtu klases privātajiem dalībniekiem, izmantojot drauga atslēgvārdu. Kopējā atšķirība starp drauga funkciju un drauga klasi ir tā, ka, lietojot drauga funkciju, var piekļūt privātās klases dalībniekiem, bet draugu klasē tiek atvērti tikai draugu klases vārdi, nevis klases privāti dalībnieki.

drauga iezīme neatkarīgi no tā, vai to izmanto funkcija vai klase, var negatīvi ietekmēt uz objektu orientēto ietvaru, jo tas vājina iekapsulēšana kas ir pret objektorientēta paradigma. Tas ir iemesls, kāpēc drauga funkcija ir jāizmanto saprātīgi, savādāk tā varētu būt pārtraukums datu slēpšana koda.

Šī drauga īpašība nav neviena komutācijas un ne pārejošs. X ir Y draugs nenozīmē, ka Y ir arī X draugs. Ja X ir Y draugs un Y ir Z draugs, tas nenozīmē, ka X ir Z draugs.

    1. Salīdzināšanas tabula
    2. Definīcija
    3. Galvenās atšķirības
    4. Secinājums

Salīdzināšanas tabula

Salīdzināšanas pamatsDrauga funkcijaDraugu klase
PamataTā ir funkcija, ko izmanto ar drauga atslēgvārdu, lai klases privātajiem dalībniekiem piešķirtu piekļuvi funkcijai, kas nav dalībnieks.Tā ir klase, ko izmanto ar drauga atslēgvārdu, lai piekļūtu citas klases privātajiem biedriem.
Nosūtīt deklarācijuJāizmanto.Nav obligāti.
IzmantojietDrauga funkciju var izmantot operatora pārslodzes situācijās.Draugu klasi var izmantot, kad klase tiek izveidota citas klases augšpusē.


Drauga funkcijas definīcija

drauga funkcija tiek izmantots, lai piekļūtu klases privātajiem un aizsargātajiem dalībniekiem, ļaujot piekļuvei funkcijai, kas nav dalībnieks. Šāda veida funkcijās pirms funkcijas nosaukuma deklarēšanas laikā tiek izmantots drauga atslēgas vārds. Drauga darbībai tiek piemēroti daži ierobežojoši nosacījumi. Pirmais nosacījums ir tas, ka drauga klasi bērni nevar mantot. Otrais nosacījums ir tāds, ka atmiņas funkcijā drauga funkcija var nebūt, kas nozīmē, ka to nevar deklarēt kā statisku un ārēju.

Drauga funkcija netiek izsaukta ar klases aicinošu objektu. Draugu funkcijas piemēri ir šādi: globāla funkcija, klases dalībnieka funkcija, funkciju veidne var būt drauga funkcija. Sapratīsim to, izmantojot piemēru.

# iekļaut izmantojot namespace std; klases pirmais {int dati; public: first (int i): data (i) {} friend void display (const first & a); }; tukšs displejs (pirmais un pirmais) {cout << "data =" <izmantojot namespace std; klase pirmā {// paziņojiet par draugu klases draugs otrā; public: First (): a (0) {} void () {cout << "Rezultāts ir" << a << endl; } privāts: int a; }; klase otrā {publika: anulētas izmaiņas (pirmā & yclass, int x) {yclass.a = x; }}; int main () Pirmais obj1; Otrais obj2; obj1. (); obj2.maina (obj1, 5); obj1. (); // Rezultāts Rezultāts ir 0 Rezultāts ir 5

  1. Drauga funkcija ir funkcija, kas var piekļūt klases privātajiem un aizsargātajiem dalībniekiem. Turpretī draugu klase ir klase, kas palīdz piekļūt klases privātajiem dalībniekiem.
  2. Drauga funkcija tiek deklarēta, iekļaujot tās prototipu klasē, pirms tam to ievadot ar atslēgvārdu draugs. Līdzīgi draugu klase tiek definēta arī, izmantojot atslēgvārdu draugs.
  3. Iepriekšēja deklarācija tiek izmantota, ja drauga funkcija ir pret, tā nav jālieto draugu klasē.

Secinājums

Drauga funkcija ir nepieciešama, ja funkcijai ir jāpiekļūst divām vai vairākām neatkarīgām klasēm, iekšējiem dalībniekiem. No otras puses, draugu klase ir nepieciešama, ja klase pieprasa piekļuvi citas klases dalībniekiem. Ja vairāku dalībnieku funkcijai ir jābūt šīs funkcijas draugam, tad labāk ir izmantot draugu klasi.