Es gibt 5 Operatoren, die in C++ nicht überladen werden können: „?:“, „.“, „::“, „sizeof“, „.*“. Wenn die Operatoren „.“ und „::“ überladen sind, kann es zu Verwirrung kommen. Der Operator „sizeof“ kann intern nicht überladen werden, da der Operator „.*“ auf einen Zeiger auf ein Klassenmitglied verweist.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, C++17-Version, Dell G3-Computer.
Es gibt 5 Operatoren, die in C++ nicht überladen werden können, nämlich: „?:“ „.“ „::“ „sizeof“ „.*“ .
Überladung: Ermöglichen Sie den Operatoren eine neue Semantik, anstatt die Syntax zu ändern, was zu Verwirrung führen würde.
Teil der Regeln zur Überladung: Mindestens ein Parameter der Operationsfunktion muss ein Objekt der Klasse oder eine Referenz auf das Objekt der Klasse sein.
Im Folgenden wird erklärt, warum diese Operatoren nicht überlastet werden können. (1) . Eins oder zwei oder keines von beiden wird ausgeführt und die Sprungeigenschaft des Operators ist nicht mehr vorhanden. Daher kann „?:“ nicht überladen werden.
(2).
Unter der Annahme, dass eine Überladung möglich ist, können wir von einer Situation ausgehen, in der wir ein Objekt erstellen und die Funktion des Objekts aufrufen.
exp1 ? exp2 : exp3
In diesem Beispiel weiß x.fun() nicht, welche Fun-Funktion aufgerufen wird.
Die Bedeutung des „.“-Operators besteht darin, auf Objektmitglieder zu verweisen. Dies kann jedoch nach einer Überladung nicht garantiert werden, was zu Verwirrung über die Bedeutung des Operators führt.(3)::
Der Hauptgrund, warum es nicht überladen werden kann, ist, dass viele interne Zeiger auf sizeof basieren.
bezieht sich auf einen Zeiger auf ein Klassenmitglied
Grundsätze für überladene Operatoren:
1. Überladene Operatoren können nicht durch Verbinden anderer Symbole erstellt werden. Neuer Operator.
3. Die Bedeutung integrierter Typoperatoren kann nicht geändert werden, z. B. die Ganzzahladdition (+). 4. Überlastete Operatoren können die Reihenfolge der Operatoren nicht garantieren. 5. Die überladene Funktion eines Klassenmitglieds verfügt über einen impliziten Standardzeiger in seinem formalen Parameter.
6. Im Allgemeinen werden Zuweisungsoperatoren als Mitgliedsfunktionen und arithmetische Operatoren als Nicht-Mitgliedsfunktionen definiert. 7. Wenn ein Operator als Mitgliedsfunktion einer Nicht-Klasse definiert ist, wird er im Allgemeinen als Freund der Klasse definiert.
8. == und != sollten paarweise erscheinen.
9. Indexoperator []: ein nicht-konstantes Mitglied und gibt eine Referenz zurück, und ein konstantes Mitglied und gibt eine Referenz zurück.
10. Die Operatoren * und -> zeigen keine Parameter an.
11. Das Präfix ++/-- muss die Referenz zurückgeben, die inkrementiert oder dekrementiert wird.
12. Eingabeoperatoren und Ausgabeoperatoren müssen als Freundfunktionen der Klasse definiert werden.
Weitere Kenntnisse zum Thema Programmierung finden Sie unter:
Einführung in die Programmierung
! !
Das obige ist der detaillierte Inhalt vonWelche Operatoren können in C++ nicht überladen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!