Rainer Grimm hat am 4. November 2017 Regeln der C++ Core Guidelines für Funktions- und Operatorüberladung erläutert. Überladene Operatoren sollen ihre gewohnte Bedeutung behalten. Gleichartige Operationen dürfen denselben Namen tragen; unterschiedliche Aufgaben sollten nicht hinter einer scheinbar einheitlichen Schnittstelle verschwinden.
Die damalige Regel C.161 empfiehlt freie Funktionen für symmetrische Operatoren. Bei gemischten Operandtypen kann eine Mitgliedsfunktion dazu führen, dass objekt + zahl gültig ist, zahl + objekt aber nicht. Grimms Beispiel zeigt diesen Unterschied mit einem eigenen Ganzzahltyp.
Konstruktoren und Konvertierungsoperatoren unterscheiden
Ein explicit-Konstruktor verhindert die dort genutzte implizite Umwandlung. Er ist jedoch kein Konvertierungsoperator. Für bewusst unterstützte gemischte Additionen lassen sich gezielte freie Überladungen für beide Operandfolgen definieren. Die alte Regel C.164 warnt vor impliziten Umwandlungen allein für kleine Bequemlichkeitsgewinne, nicht pauschal vor jeder fachlich begründeten Konvertierung.
Für gemeinsame Engine-Datentypen folgt daraus eine konkrete Review-Aufgabe: Gewünschte Operandfolgen und unerwünschte Umwandlungen getrennt testen. Ein eigener kleiner C++14-Compile-Test bestätigt den beschriebenen Unterschied. Erfolgreiches Kompilieren prüft dabei die Typregeln, nicht automatisch die fachliche Bedeutung einer Addition.
Die Grundsätze der C++ Core Guidelines verbinden lesbare Absichten mit möglichst frühen Prüfungen. Die Regeln zur Überladung konkretisieren diesen Ansatz an Schnittstellen. Sie sind Empfehlungen für die Gestaltung, keine neue C++-Sprachversion.
Archivhinweis: Grundlage ist der dokumentierte Leitlinienstand vom 31. Oktober 2017 und Grimms Beitrag vom November 2017. Spätere Änderungen der laufend gepflegten Sammlung sind nicht Gegenstand dieser Meldung.

