Ist dies zulässig? Wenn nicht, wird der folgende Code dies zulassen?Zugriff auf private Elemente des Objekts derselben Klasse
class Foo
{
friend class Foo;
}
Ist dies zulässig? Wenn nicht, wird der folgende Code dies zulassen?Zugriff auf private Elemente des Objekts derselben Klasse
class Foo
{
friend class Foo;
}
Das ist überflüssig. Foo hat bereits Zugriff auf alle Foo-Mitglieder. Zwei Foo-Objekte können auf die Mitglieder des jeweils anderen zugreifen.
class Foo {
public:
int touchOtherParts(const Foo &foo) {return foo.privateparts;}
private:
int privateparts;
};
Foo a,b;
b.touchOtherParts(a);
Der obige Code funktioniert einwandfrei. B wird auf das private Datenelement von a zugreifen.
Es ist redundant und unnötig. Außerdem erhalte ich die folgende Warnung in g ++
warning: class ‘Foo’ is implicitly friends with itself
Ja, es ist legal für ein Objekt der Klasse Foo
Foo
die privaten Mitglieder eines anderen Objekts der Klasse zuzugreifen. Dies ist häufig notwendig für Dinge wie Kopieraufbau und -zuweisung, und es ist keine spezielle Friend-Deklaration erforderlich.
Klassen, die sich selbst frienden, sind sinnvoll, wenn sie Vorlagen sind, da jede Instanz mit unterschiedlichen Parametern eine andere Klasse ist.
Warum brauchen Sie das? – ybungalobill