Ich die meisten Betreiber Überlastung verstehen, mit Ausnahme der Mitgliedszugangsbetreiber ->
, .*
,->*
usw.
Was wird insbesondere an diese Operatorfunktionen übergeben und was sollte zurückgegeben werden?
Woher weiß die Bedienerfunktion (z. B. operator->(...)
), auf welches Mitglied verwiesen wird? Kann es wissen? Muss es überhaupt wissen?
Gibt es schließlich irgendwelche konstanten Überlegungen, die berücksichtigt werden müssen? Wenn Sie beispielsweise so etwas überladen operator[]
, benötigen Sie im Allgemeinen sowohl eine konstante als auch eine nicht konstante Version. Benötigen Mitgliederzugriffsoperatoren konstante und nicht konstante Versionen?
const
und Nichtversionen const
von operator->
sind nicht erforderlich , aber es kann nützlich sein, beide bereitzustellen.
->*
und .*
. Tatsächlich werden sie nicht einmal erwähnt! Ich denke, sie sind zu selten, um in einer FAQ zu sein, aber ich würde diese Frage gerne aus der FAQ verlinken. Bitte schließen Sie dies nicht als Betrug der FAQ!