Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse

friend er en mekanisme som gjør at du kan aksessere private funksjoner og variabler i en klasse utenfra klassen. Et lite eksempel:

 

#include <string>

class Babe
{
private:
  static void DoSomethingPrivate();
  
  friend class Boyfriend; // gir Boyfriend aksess til alle private funksjoner medlemsvariable
  friend Lover::MeetMistress(); //gir privat aksess til en funksjon i Lover klassen
  friend MeetLover(const std::string &); // gir privat aksess til MeetLover funksjonen
};


class Boyfriend
{
  void MeetGirlfriend()
  {
     Babe::DoSomethingPrivate(); //ok, fordi Babe har Boyfriend som friend
  }
};


class Lover
{
  void MeetMistress()
  {
     Babe::DoSomethingPrivate();
  }

  void CallMistress()
  {
     // Babe::DoSomethingPrivate();  //vil ikke kompilere
  }
};


void MeetLover(const std::string& location_)
{
  Babe::DoSomethingPrivate(); //ok, fordi Babe har MeetLover funksjonen som friend
}

 

Håper du fikk et lite inntrykk av hva friend er. Prøv gjerne å fjerne noen av friend deklarasjonene for å se hva som vil skje uten dem (NB! jeg har ikke kjørt koden gjennom en kompilator, så jeg tar forbehold om trykkleifer...)

Lenke til kommentar

Se TCPL §11.5 for et eks. som snakker om multiplikasjon av en matrise-klasse med en vektor-klasse.

 

Eventuellt se eksempler i din egen bok, eller google.

 

Edit:

Kort; poenget er at (du i den gjeldende) klassen selv kan velge, "med nøyaktighet", hva som skal ha tilgang. Ikke enten-eller: public / private || protected.

Endret av søppel
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...