Sõbrafunktsiooni ja sõbra klassi erinevus

Autor: Laura McKinney
Loomise Kuupäev: 1 Aprill 2021
Värskenduse Kuupäev: 4 Mai 2024
Anonim
Sõbrafunktsiooni ja sõbra klassi erinevus - Tehnoloogia
Sõbrafunktsiooni ja sõbra klassi erinevus - Tehnoloogia

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.


    1. Võrdlusdiagramm
    2. Definitsioon
    3. Peamised erinevused
    4. Järeldus

Võrdlusdiagramm

Võrdluse alusSõbra funktsioonSõbraklass
PõhilineSee 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 deklaratsioonTuleb kasutada.Ei ole kohustuslik.
KasutageSõ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 nimeruumi std kasutamine; klassi esimene {int andmed; avalik: esimene (int i): andmed (i) {} sõbra tühine kuva (const first & a); }; tühine kuva (const first & a) {cout << "data =" <kasutades nimeruumi std; klass esimene {// Kuuluta sõber klassi sõber klassi teiseks; avalik: esimene (): a (0) {} tühine () {cout << "Tulemuseks on" << a << endl; } privaatne: int a; }; klass teine ​​{avalik: tühine muutus (esimene & yclass, int x) {yclass.a = x; }}; int main () Esimene obj1; Teine obj2; obj1. (); obj2.muuta (obj1, 5); obj1. (); // Väljund Tulemus on 0 Tulemus on 5

  1. Sõbrafunktsioon on funktsioon, millel on juurdepääs klassi privaatsetele ja kaitstud liikmetele. Sõbraklass on seevastu klass, mis aitab klassi eraviisilistele liikmetele ligi pääseda.
  2. Sõbrafunktsioon kuulutatakse välja, kui lisatakse prototüüp klassi sisse, eelnev märksõnaga sõber. Sarnaselt määratletakse sõbra klass ka märksõna sõber abil.
  3. Edastamisdeklaratsiooni kasutatakse juhul, kui sõber töötab, seda pole vaja sõbra klassis kasutada.

Järeldus

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.