Wenn eine abgeleitete Klasse privat von einer Klasse geerbt wird und die abgeleitete Klasse eine friend-Funktion f () hat, so können die Mitglieder f () von der abgeleiteten Klasse und der Basisklasse aus zugreifen.
%Vor%Ich verstehe, dass, wenn eine Klasse privat von der Basisklasse geerbt wird, alles in der abgeleiteten Klasse privat ist.
Aber warum im obigen Code kann die Funktion f () auf a, b, d, e, f, aber nicht auf c?
zugreifen'Freundschaft' gewährt den Zugriff auf die Klasse, die den Freund deklariert - es ist nicht transitiv. Um eine schlechte Analogie zu verwenden - meine Freunde sind nicht unbedingt die Freunde meines Vaters.
Die C ++ FAQ hat ein bisschen mehr Details:
Ein Freund von Derived
kann genau auf das zugreifen, was Derived
selbst kann - also jedes Mitglied von Derived
und jedes öffentliche oder geschützte Mitglied einer Basisklasse oder einer öffentlichen oder geschützten übergeordneten Klasse , aber nicht alle privaten Mitglieder von Basisklassen oder Mitglieder von privaten übergeordneten Klassen.
Tags und Links c++ inheritance