Ero ystävätoiminnon ja ystäväluokan välillä

Kirjoittaja: Laura McKinney
Luomispäivä: 1 Huhtikuu 2021
Päivityspäivä: 13 Saattaa 2024
Anonim
Ero ystävätoiminnon ja ystäväluokan välillä - Tekniikka
Ero ystävätoiminnon ja ystäväluokan välillä - Tekniikka

Sisältö


Ystävä-toiminto ja ystäväluokka ovat tekniikoita, joilla päästään luokan yksityisiin jäseniin käyttämällä ystäväsanaa. Ystävätoiminnon ja ystäväluokan välillä on yleinen ero siinä, että kun ystävätoimintoa käytetään, yksityisluokan jäseniin pääsee, mutta ystäväluokassa vain ystäväluokan nimiin saadaan pääsy, ei luokan yksityisiin jäseniin.

ystäväominaisuus Voiko funktio tai luokka käyttää sitä negatiivisella vaikutuksella oliokeskeiseen kehykseen, koska se heikentää kapselointi joka on olio- paradigma. Tästä syystä ystäväominaisuutta on käytettävä viisaasti, muuten se voisi tauko tietojen piilottaminen koodista.

Tämä ystäväominaisuus ei ole kumpikaan kommutatiivinen eikä transitiivinen. X on Y: n ystävä, ei päätellä, että Y on myös X: n ystävä. Jos X on Y: n ystävä ja Y on Z: n ystävä, ei tarkoita, että X on Z: n ystävä.


    1. Vertailutaulukko
    2. Määritelmä
    3. Keskeiset erot
    4. johtopäätös

Vertailutaulukko

Vertailun perusteetYstävätoimintoYstäväluokka
perustiedotSe on toiminto, jota käytetään ystäväavainsanan avulla, jotta muille kuin jäsenille tarkoitettu toiminto pääsee luokan yksityisille jäsenille.Se on luokka, jota käytetään ystävähakusanalla päästäkseen toisen luokan yksityisiin jäseniin.
VälitysilmoitusOn käytettävä.Ei pakollinen.
KäyttääYstävätoimintoa voidaan käyttää joissain kuljettajan ylikuormitustilanteissa.Ystäväluokkaa voidaan käyttää, kun luokka luodaan toisen luokan päälle.


Määritelmä Ystävätoiminto

ystävätoiminto Käytetään luokan yksityisten ja suojattujen jäsenten pääsyyn sallimalla muulle kuin jäsentoiminnolle pääsy. Tämän tyyppisessä toiminnossa ystäväsanaa käytetään ennen toiminnon nimeä ilmoituksen tekohetkellä. Ystävätoimintoihin sovelletaan joitain rajoittavia ehtoja. Ensimmäinen ehto on, että lapsiluokka ei peri ystävätoimintoa. Toinen ehto on, että säilytysluokan määrittelijä ei välttämättä ole läsnä ystävätoiminnossa, mikä tarkoittaa, että sitä ei voida julistaa staattiseksi ja ulkoiseksi.

Ystäväfunktiota ei kutsuta luokan kutsuvalla kohteella. Esimerkkejä ystävätoiminnoista ovat: globaali funktio, luokan jäsentoiminto, funktiomalli voi olla ystävätoiminto. Ymmärretään se esimerkin avulla.

#sisältää käyttämällä nimitilaa std; luokan ensimmäinen {sisäiset tiedot; julkinen: ensimmäinen (int i): data (i) {} ystävän tyhjä näyttö (const first & a); }; tyhjä näyttö (const first & a) {cout << "data =" <käyttäen nimitilaa std; luokka ensimmäinen {// Julista ystävä luokkaystävä luokka toinen; julkinen: Ensimmäinen (): a (0) {} void () {cout << "Tulos on" << a << endl; } yksityinen: int a; }; luokka toinen {julkinen: mitätön muutos (ensimmäinen & yklassi, int x) {yclass.a = x; }}; int main () Ensimmäinen obj1; Toinen obj2; obj1. (); obj2.change (obj1, 5); obj1. (); // Tulos Tulos on 0. Tulos on 5

  1. Ystävätoiminto on toiminto, jolla pääsee luokan yksityisiin ja suojattuihin jäseniin. Ystäväluokka on sitä vastoin luokka, joka auttaa pääsemään luokan yksityisiin jäseniin.
  2. Ystäväfunktio ilmoitetaan sisällyttämällä sen prototyyppi luokan sisään, edeltävä se avainsanan ystävä kanssa. Samoin ystäväluokka määritellään myös avainsanalla ystävä.
  3. Eteenpäin-ilmoitusta käytetään, jos ystävätoiminto on vastoin, sitä ei tarvitse käyttää ystäväluokassa.

johtopäätös

Ystävätoiminto vaaditaan, kun toiminnon on päästävä käyttämään kahta tai useampaa itsenäistä luokkaa, sisäisiä jäseniä. Toisaalta ystäväluokkaa tarvitaan, kun luokka vaatii pääsyn toisen luokan jäseniin. Kun usean jäsentoiminnon on oltava kyseisen toiminnon ystävä, siinä tapauksessa on parempi käyttää ystäväluokkaa.