Warum ist es nicht möglich, den tiefgestellten Operator (Operator []) als Friend-Funktion zu überladen?Operator [] Überladen mit Freundesfunktion
Antwort
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.
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.
- 1. Wörterbücher mit Operator überladen
- 2. Funktionsvorlage mit Operator überladen
- 3. Operator überladen []
- 4. Operator überladen *
- 5. Monitor mit Operator überladen C++
- 6. ostream operator überladen auf einem überladen Postfix Inkrement/Dekrement-Operator
- 7. C++ überladen Operator Stapelüberlauf
- 8. Unterstützt Dart Operator überladen
- 9. Operator überladen auf Klassenvorlagen
- 10. ruby operator überladen frage
- 11. Operator in C++ überladen
- 12. C++ statischer Operator überladen
- 13. Überladen von tiefgestellten Operator
- 14. Operator überladen >>
- 15. Dart, Überladen [] Operator?
- 16. C++: Überladen Operator =
- 17. Operator == überladen vergleicht nicht
- 18. Operator überladen und String ändern
- 19. Einen Operator überladen kontextspezifisch machen
- 20. Operator = Überladen mit anderen Parametern in C++?
- 21. Operator überladen mit seq <'T>
- 22. Ableiten von einer Klasse mit Operator überladen
- 23. Binärer Operator überladen und Polymorphismus
- 24. binärer Operator überladen; implizite Typkonvertierung
- 25. Operator überladen Funktionen als Freund?
- 26. Wie wird dieser Operator [] überladen?
- 27. Operator überladen für C++ - Karten
- 28. Operator überladen als Freund Funktionsfehler
- 29. Subclassing Swift Double/Operator Überladen von Typalias
- 30. Überladen von = Operator für eine Klasse
Sie sollten wahrscheinlich ein Sprach-Tag hinzufügen (ich denke 'C++' aus der 'friend-function' Tag Beschreibung), so dass Sie mehr Aufmerksamkeit bekommt. – Aaron
Danke für den Vorschlag @Aaron –