Forskjell mellom vennefunksjon og venneklasse
Innhold
Vennefunksjonen og venneklassen er teknikkene som brukes for å få tilgang til private medlemmer av en klasse ved å bruke vennens nøkkelord. Den vanlige forskjellen mellom vennefunksjon og venneklasse er at når vennefunksjon brukes, kan du få tilgang til private klassemedlemmer, men i venneklasse får du bare tilgang til navnene på venneklassen, ikke de private medlemmene i klassen.
De vennefunksjon om det brukes av funksjon eller klasse kan gi en negativ innvirkning på det objektorienterte rammeverket når det svekker innkapsling som er mot objekt orientert paradigme. Dette er grunnen til at vennefunksjonen må brukes med omhu, ellers kan det gå i stykker de data gjemmer seg av koden.
Denne vennefunksjonen er ingen av dem kommutativ og heller ikke transitive. X er en venn av Y gjør ikke utfra at Y er også en venn av X. Hvis X er en venn av Y og Y er en venn av Z, impliserer det ikke at X er en venn av Z.
-
- Sammenligningstabell
- Definisjon
- Viktige forskjeller
- Konklusjon
Sammenligningstabell
Grunnlag for sammenligning | Vennefunksjon | Venneklasse |
---|---|---|
grunn~~POS=TRUNC | Det er en funksjon som brukes sammen med et vennens nøkkelord for å gi en ikke-medlemsfunksjon tilgang til de private medlemmene i en klasse. | Det er en klasse som brukes sammen med et vennens nøkkelord for å få tilgang til private medlemmer i en annen klasse. |
Videresenderklæring | Må brukes. | Ikke obligatorisk. |
Bruk | En vennefunksjon kan brukes i en situasjon med overbelastning av operatøren. | En venneklasse kan brukes når en klasse opprettes på toppen av en annen klasse. |
Definisjon av vennefunksjon
De vennefunksjon brukes til å få tilgang til de private og beskyttede medlemmene i en klasse ved å la ikke-medlemsfunksjonen få tilgang. I denne typen funksjoner brukes et vennsøkkelord før funksjonsnavnet på erklæringstidspunktet. Det er noen restriktive forhold som gjelder vennefunksjonen. Den første betingelsen er at vennefunksjonen ikke blir arvet av en barneklasse. Den andre betingelsen er at lagerklasse-spesifiser ikke kan være til stede i vennefunksjonen, noe som betyr at den ikke kan erklæres som statisk og ekstern.
Vennefunksjonen blir ikke kalt med et påkallende objekt fra klassen. Eksemplene på vennefunksjon er: en global funksjon, medlemsfunksjon i en klasse, funksjonsmal kan være en vennefunksjon. La oss forstå det ved hjelp av et eksempel.
#inkludere En vennefunksjon er påkrevd når en funksjon trenger tilgang til to eller flere uavhengige klasser, interne medlemmer. På den annen side er det nødvendig med en venneklasse når en klasse krever tilgang til medlemmene i en annen klasse. Når en funksjon med flere medlemmer trenger å være en venn av den funksjonen, er det i så fall bedre å bruke venneklasse.
Konklusjon