Forskel mellem Friend-funktion og Friend Class
Indhold
Venfunktionen og venklassen er de teknikker, der bruges til at få adgang til de private medlemmer af en klasse ved hjælp af et nøgleord. Den almindelige forskel mellem venefunktion og veneklasse er, at når venefunktionen bruges, kan man få adgang til private klassemedlemmer, men i venneklassen er det kun navnene på veneklassen, der ikke er adgang til de private medlemmer af klassen.
Det ven funktion om det bruges af funktion eller klasse kan give en negativ indvirkning på den objektorienterede ramme, da den svækker indkapsling hvilket er imod objektorienteret paradigme. Dette er grunden til, at venefunktionen skal bruges med omhu, ellers kunne det pause det data skjuler af koden.
Denne venefunktion er hverken kommutativ og heller ikke transitivt. X er en ven af Y afgør ikke, at Y også er en ven af X. Hvis X er en ven af Y og Y er en ven af Z, betyder det ikke, at X er en ven af Z.
-
- Sammenligningstabel
- Definition
- Vigtige forskelle
- Konklusion
Sammenligningstabel
Grundlag for sammenligning | Ven Funktion | Veneklasse |
---|---|---|
Grundlæggende | Det er en funktion, der bruges sammen med et venligt nøgleord til at give en ikke-medlem funktion adgang til de private medlemmer af en klasse. | Det er en klasse, der bruges sammen med et venhedsnøgleord til at få adgang til de private medlemmer af en anden klasse. |
Fremsendelseserklæring | Skal bruges. | Ikke obligatorisk. |
Brug | En vensfunktion kan bruges i en situation med overbelastning af operatøren. | En vensklasse kan bruges, når der oprettes en klasse øverst i en anden klasse. |
Definition af Friend-funktion
Det ven funktion bruges til at få adgang til de private og beskyttede medlemmer af en klasse ved at tillade, at ikke-medlemsfunktionen får adgang. I denne type funktion bruges et venhedsnøgleord før funktionsnavnet på erklæringstidspunktet. Der er nogle restriktive betingelser, der gælder for venefunktion. Den første betingelse er, at venefunktionen ikke arves af en barneklasse. Den anden betingelse er, at lagerklasse-specificeren muligvis ikke er til stede i venefunktion, hvilket betyder, at den ikke kan erklæres som statisk og ekstern.
Venfunktionen kaldes ikke med et påkaldende objekt fra klassen. Eksemplerne på venefunktion er: en global funktion, medlemsfunktion i en klasse, funktionsskabelon kan være en vensfunktion. Lad os forstå det ved hjælp af et eksempel.
#omfatte En vensfunktion er påkrævet, når en funktion skal have adgang til to eller flere uafhængige klasser, interne medlemmer. På den anden side er der brug for en vensklasse, når en klasse kræver adgang til medlemmerne af en anden klasse. Når en funktion med flere medlemmer skal være en ven af denne funktion, er det i så fald bedre at bruge venklasse.
Konklusion