Atšķirība starp drauga funkciju un drauga klasi
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.
-
- Salīdzināšanas tabula
- Definīcija
- Galvenās atšķirības
- Secinājums
Salīdzināšanas tabula
Salīdzināšanas pamats | Drauga funkcija | Draugu klase |
---|---|---|
Pamata | Tā 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āciju | Jāizmanto. | Nav obligāti. |
Izmantojiet | Drauga 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 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.
Secinājums