Sõbrafunktsiooni ja sõbra klassi erinevus
Sisu
Funktsioon Sõber ja sõberklass on tehnikad, mille abil pääsevad klassi privaatsetele liikmetele kasutusele sõbra märksõna abil. Sõbrafunktsiooni ja sõbra klassi ühiseks erinevuseks on see, et kui sõbrafunktsiooni kasutatakse, pääseb juurde eraklassi liikmetele, kuid sõbraklassis pääsetakse juurde ainult sõbra klassi nimedele, mitte klassi eraliikmetele.
sõbra funktsioon kas funktsioon või klass võib seda kasutada objektorienteeritud raamistikule negatiivselt, kuna see nõrgendab kapseldamine mis on vastu objektorienteeritud paradigma. See on põhjus, miks sõbra funktsiooni tuleb targalt kasutada, vastasel juhul võiks see toimida murda andmete peitmine koodist.
See sõberfunktsioon pole kumbki kommutatiivne ega ka transitiivne. X on Y sõber, ei järelda, et Y oleks ka X sõber. Kui X on Y sõber ja Y on Z sõber, ei tähenda see, et X oleks Z sõber.
-
- Võrdlusdiagramm
- Definitsioon
- Peamised erinevused
- Järeldus
Võrdlusdiagramm
Võrdluse alus | Sõbra funktsioon | Sõbraklass |
---|---|---|
Põhiline | See on funktsioon, mida kasutatakse sõbra märksõna abil, et anda klassi mittekuuluvatele funktsioonidele juurdepääs klassi eraviisilistele liikmetele. | See on klass, mida kasutatakse sõbra märksõna abil teise klassi eraisikutele juurde pääsemiseks. |
Edasta deklaratsioon | Tuleb kasutada. | Ei ole kohustuslik. |
Kasutage | Sõbrafunktsiooni saab kasutada operaatori ülekoormamise olukorras. | Sõbraklassi saab kasutada siis, kui klass luuakse mõne teise klassi peale. |
Sõbra funktsiooni määratlus
sõbra funktsioon kasutatakse klassi eraviisilistele ja kaitstud liikmetele juurdepääsu saamiseks, võimaldades juurdepääsu mitteliikmelistele funktsioonidele. Seda tüüpi funktsioonides kasutatakse sõbra märksõna deklareerimise ajal funktsiooni nime ees. Sõbra funktsioonile on seatud mõned piiravad tingimused. Esimene tingimus on see, et sõbra klass ei päri lasteklassi poolt. Teine tingimus on see, et salvestusklassi spetsifikaator ei pruugi olla sõbra funktsioonis, mis tähendab, et seda ei saa kuulutada staatiliseks ja väliseks.
Sõbrafunktsiooni ei kutsuta klassi kutsuva objektiga. Sõbrafunktsiooni näited on järgmised: globaalne funktsioon, klassi liikmefunktsioon, funktsioonimall võib olla sõbrafunktsioon. Mõistagem seda näite abil.
# kaasata Sõbrafunktsioon on vajalik, kui funktsioon peab pääsema juurde kahele või enamale sõltumatule klassile, sisemisele liikmele. Teisest küljest on sõbraklass vajalik siis, kui klass nõuab juurdepääsu mõne teise klassi liikmetele. Kui mitmeliikmeline funktsioon peab olema selle funktsiooni sõber, on sel juhul parem kasutada sõbra klassi.
Järeldus