Ich habe einige grundlegende Fragen zur Operatorüberladung in C++.
Ich lese gerade "Thinking in C++, Band 1" und dort steht, dass Operatoren, die nicht überladen werden können, der Member Selection Operator . und der Operator zur Dereferenzierung von Mitgliedern *. Es sieht also so aus, als ob andere Operatoren überladen werden können
Kann ich den Betreiber überlasten? Aber wird dies den Compiler nicht verwirren, wenn ich ihn als Präfix-Operator implementiere, oder verbirgt er dann seine Standardbedeutung?
Im Code, um auf öffentliche Mitglieder zu verweisen, mache ich etwas wie ptr -> data_member
Ich verstehe, dass Compiler kümmert sich um es und bindet diese Referenz mit dem Datenelement, so dass dies überhaupt nicht zur Laufzeit gesehen wird und -> kommt nicht über als Operator zur Laufzeit. Ist dieses Verständnis richtig?
Nebenbei bemerkt existiert das virtuelle Konzept nur für Memberfunktionen und nicht für Data Members, richtig? Wenn also zur Laufzeit ein Basiszeiger auf eine abgeleitete Klasse zeigt, kann ich von diesem Zeiger aus nicht auf Mitglieder der abgeleiteten Klasse zugreifen?
Kann ich den Operator -> überladen? Aber wird das den Compiler nicht verwirren, wenn ich ihn als Präfix-Operator überlade?
Wenn die Frage nicht richtig formuliert ist, lassen Sie es mich wissen.
Gibt es für jede Klasse eine eingebaute Überladung von Operatoren durch den Compiler?