Friends

Auch Klassen können Freunde haben. Wenn wir eine Funktion oder Klasse als Freund einer Klasse deklarieren, so dürfen Objekte dieser Klasse auch auf private Member zugreifen. Eine friend Bindung zwischen 2 Klassen ist deshalb eine sehr enge und soll somit soweit es geht vermieden werden.

    #include<iostream>
    using namespace std;

    class Test
    {
      friend void friendFunktion(Test&);
      //bzw: friend class friendClass;
    private:
      void geheim()
      {
        cout<<"streng geheim!\n";
      }
    };

    void friendFunktion(Test& t)
    {
      t.geheim();
    }

    int main()
    {
      Test t;
      //t.geheim(); //geht nicht, denn geheim() ist private
      friendFunktion(t);
    }
    

Freundschaft wird nicht vererbt. Wenn man bei abgeleiteten Klasse auch noch eine Freundschaft haben will, muss man die friend Deklarationen erweitern.

top