Welche Operatoren können in C++ nicht überladen werden?

青灯夜游
Freigeben: 2021-01-21 14:05:43
Original
9640 Leute haben es durchsucht

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.

Welche Operatoren können in C++ nicht überladen werden?

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
Nach dem Login kopieren

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)::

Dieser Operator wird nur zur Kompilierungszeit der Domäne analysiert und nimmt nicht an Vorgängen teil. Gemäß den Überladungsregeln wird bei einer Überlastung des Operators eine neue Semantik gegeben und es kann zu Verwirrung kommen.


(4) sizeof

Der Hauptgrund, warum es nicht überladen werden kann, ist, dass viele interne Zeiger auf sizeof basieren.

(5).*

bezieht sich auf einen Zeiger auf ein Klassenmitglied

Erweiterte Informationen:

Grundsätze für überladene Operatoren:
1. Überladene Operatoren können nicht durch Verbinden anderer Symbole erstellt werden. Neuer Operator.

2. Der überladene Operator muss einen Operanden vom Klassentyp oder Aufzählungstyp haben.

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!