Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Autor: pekfos
Programowanie obiektowe, C++

Przyjaźń

[lekcja] 7. O przyjaźni słów kilka..

Przyjaźń

Zdarza się, że jakaś klasa/funkcja potrzebuje dostępu do prywatnych lub chronionych składowych klasy. Aby zezwolić na dostęp, używa się deklaracji przyjaźni miedzy klasą a inną klasą lub funkcją.
Deklaracje przyjaźni umieszcza się w klasie, która ma udostępniać swoje składowe wybranym klasom i/lub funkcjom.
C/C++
class Klasa
{
    int moj_tajny_int;
   
    friend class ZaprzyjaznionaKlasa; //friend <deklaracja klasy>
    friend void ZaprzyjaznionaFunkcja( Klasa & ); //friend <deklaracja funkcji>
};

class ZaprzyjaznionaKlasa
{
public:
    void metoda( Klasa & k )
    {
        k.moj_tajny_int = 0; //Dostęp do prywatnej składowej innej klasy!
    }
};

void ZaprzyjaznionaFunkcja( Klasa & k )
{
    k.moj_tajny_int = 0; //Jest dostęp!
}

int main()
{
    Klasa k;
   
    ZaprzyjaznionaKlasa zk;
    zk.metoda( k );
    ZaprzyjaznionaFunkcja( k );
}
Funkcja zaprzyjaźniona może być zdefiniowana wewnątrz klasy:
C/C++
class Klasa
{
    friend void funkcja() //funkcja, a nie metoda
    {
    }
};
Poprzedni dokument Następny dokument
Metody stałe Operatory