Ieteicams, 2024

Redaktora Izvēle

Starpība starp drauga funkciju un draugu klasi

Drauga funkcija un draugu klase ir metodes, ko izmanto, lai piekļūtu klases privātiem dalībniekiem, izmantojot drauga atslēgvārdu. Kopējā atšķirība starp drauga funkciju un draugu klasi ir tāda, ka tad, kad tiek izmantota drauga funkcija, var piekļūt privātā kluba biedriem, bet draugu klasē tikai draugu klases vārdi ir pieejami ne privātajiem klases locekļiem.

Draugu funkcija, ko izmanto funkcija vai klase, var negatīvi ietekmēt objektu orientētu sistēmu, jo tā vājina iekapsulēšanu, kas ir pret objektu orientētu paradigmu. Tas ir iemesls, kāpēc drauga funkcija ir jāizmanto saprātīgi, citādi tā var izjaukt koda slēpšanu .

Šī drauga funkcija nav ne komutatīva, ne transitīva . X ir Y draugs, nenosaka, ka Y ir arī X draugs. Ja X ir Y draugs un Y ir Z draugs, tas nenozīmē, ka X ir Z. draugs.

Salīdzinājuma diagramma

Salīdzināšanas pamatsDrauga funkcijaDraugu klase
PamataTā ir funkcija, kas tiek izmantota kopā ar drauga atslēgvārdu, lai piešķirtu grupai nepiederošu funkciju piekļūt klases privātiem dalībniekiem.Tā ir klase, ko izmanto kopā ar drauga atslēgvārdu, lai piekļūtu citas klases privātajiem dalībniekiem.
Pārsūtīt deklarācijuJāizmanto.Nav obligāta.
IzmantotDraugu funkcija var tikt izmantota dažās operatora pārslodzes situācijās.Draugu klasi var izmantot, ja klasi izveido citas klases virsotnē.

Drauga funkcijas definīcija

Draugu funkcija tiek izmantota, lai piekļūtu klases privātajiem un aizsargātajiem dalībniekiem, ļaujot nepiederošajai funkcijai piekļūt. Šāda veida funkcijā drauga atslēgvārds tiek izmantots pirms funkcijas nosaukuma deklarācijas brīdī. Draugu funkcijai ir daži ierobežojoši nosacījumi. Pirmais nosacījums ir tas, ka drauga funkcija nav mantojama bērna klasei. Otrs nosacījums ir tas, ka uzglabāšanas klases specifikācija var nebūt pieejama drauga funkcijā, kas nozīmē, ka to nevar deklarēt kā statisku un ārēju.

Draugu funkcija netiek izsaukta ar klases priekšmetu. Draugu funkcijas piemēri ir: globāla funkcija, klases funkcijas funkcija, funkciju veidne var būt drauga funkcija. Sapratīsim to ar piemēru.

 #include izmantojot namespace std; pirmās klases {int data; publiski: pirmais (int i): dati (i) {} drauga tukšais displejs (const first & a); }; tukšs displejs (const first & a) {cout << "data =" < 

Draugu klases definīcija

Līdzīgi kā drauga funkcijai, mēs varam padarīt vienu klasi par citas klases draugu, ko sauc par draugu klasi . Lai draugu klase varētu piekļūt privātiem dalībniekiem, kas definēti otrajā klasē. Ir svarīgi atcerēties, ka draugu klase var piekļūt tikai tiem nosaukumiem, kas definēti otrajā klasē, nevis mantot citu klasi. Tieši pirmās klases locekļi nevar kļūt par draugu klases biedriem. Šīs draugu klases tiek reti izmantotas.

Draugu klasi var deklarēt vairāk nekā vienā klasē. Tā tiek uzskatīta par īsu alternatīvu metodi drauga funkcijai, jo ar tās palīdzību mēs varam izveidot draugu klasi, kas var piekļūt visiem datu biedriem un funkcijai, nevis izveidot vairākas draugu funkcijas.

 #include izmantojot namespace std; klase Pirmā {// Atzīst drauga klases draugu klasi Otrā; public: First (): a (0) {} void print () {cout << "Rezultāts ir" << a << endl; } privāti: int a; }; class Second {public: void change (pirmais & yclass, int x) {yclass.a = x; }}; int main () // Rezultāts Rezultāts ir 0 Rezultāts ir 5 

Galvenās atšķirības starp drauga funkciju un draugu klasi

  1. Drauga funkcija ir funkcija, kas var piekļūt privātiem un aizsargātiem klases dalībniekiem. Savukārt draugu klase ir klase, kas palīdz piekļūt klases privātajiem dalībniekiem.
  2. Draugu funkcija tiek deklarēta, iekļaujot tās prototipu klasē, pirms tam to norādot ar atslēgvārdu draugu. Tāpat arī draugu klase ir definēta, izmantojot atslēgvārdu draugu.
  3. Nosūtīšanas deklarācija tiek izmantota, ja draugs darbojas pretēji, nav nepieciešams to izmantot draugu klasē.

Secinājums

Nepieciešama drauga funkcija, ja funkcijai nepieciešams piekļūt divām vai vairākām neatkarīgām klasēm, iekšējiem dalībniekiem. No otras puses, ir nepieciešama draugu klase, ja klasei ir nepieciešama piekļuve citas klases biedriem. Ja vairāku dalībnieku funkcijai ir jābūt šīs funkcijas draugam, šajā gadījumā labāk ir izmantot draugu klasi.

Top