0

Warum ist es nicht möglich, den tiefgestellten Operator (Operator []) als Friend-Funktion zu überladen?Operator [] Überladen mit Freundesfunktion

+0

Sie sollten wahrscheinlich ein Sprach-Tag hinzufügen (ich denke 'C++' aus der 'friend-function' Tag Beschreibung), so dass Sie mehr Aufmerksamkeit bekommt. – Aaron

+0

Danke für den Vorschlag @Aaron –

Antwort

1

Als Bjarne Stroustrup sagt im D&E book:

Aber auch in dem ursprünglichen Entwurf von C++, ich Operatoren [] beschränkt, () und -> Mitglieder. Es schien eine harmlose Einschränkung zu sein, die die Möglichkeit einiger obskurer Fehler beseitigte, da diese Operatoren immer von dem Zustand ihres linken Operanden abhängig sind und diesen typischerweise modifizieren. Es ist jedoch wahrscheinlich ein Fall von unnötigem Kindermädchen.

0

Friends sind keine Erweiterungen für Ihre Klasse, nur ein Schlüsselwort, das besagt, dass xy ​​Zugriff auf die privaten oder geschützten Mitglieder Ihrer Klasse hat. Sie können Funktionen auf diese Weise nicht überschreiben oder hinzufügen.

Die Friend-Deklaration wird in einem Klassenhauptteil angezeigt und gewährt privaten und geschützten Mitgliedern der Klasse, für die die Friend-Deklaration angezeigt wird, eine Funktion oder einen anderen Klassenzugriff.

Source