Sie können nicht. Sie können nur vorhandene Operatoren überladen und nicht für eingebaute Typen.
Wie bei den anderen Antworten bereits erwähnt, ist dies für integrierte Typen nicht möglich. ABER Sie können dies für benutzerdefinierte Typen wie diesen verwenden (minimales Codebeispiel):
%Vor% Wie andere angemerkt haben: das ist nicht möglich. Sie können einen anderen Operator, wie ^
, für die Potenzierung überladen, stattdessen jedoch für einen einfachen Typ Wrapper-Klasse / Objekt.
Aber, wenn Sie abenteuerlustig sind, ein anderer Weg, ist, ein Mikro-DSL zu schaffen, das die sofortige Berechnung eines solchen Betreibers unterstützt. Ein berühmtes Beispiel dafür ist LISP in C ++ >
Angesichts des Aufwands, der damit verbunden ist, kann es aber auch nicht dein Ding sein. Es ist jedoch zu wissen, dass eine solche Möglichkeit besteht.
UPDATE:
Operator-Overloading funktioniert, indem bereits vorhandene Operatoren überladen werden. Warum? Denn wenn Sie Ihre eigenen definieren können, müssen Sie auch den Vorrang solcher Operatoren definieren, die leicht dem Missbrauch von Operatoren ausweichen können, indem sie ihren ursprünglichen Zweck abstrahieren - was die Schwierigkeit beim Lesen von Code erhöht. (Zumindest ist das das Argument, das gemacht wurde).
Der nächstgelegene Operator mit einer semantischen Bedeutung nahe **
ist der Caret-Operator. Eine naive und illustrative Implementierung eines solchen Operators ist:
Leider ist die Menge der Operatoren, die in C ++ überladen werden kann, behoben und enthält nicht den Operator **. Sie könnten stattdessen operator^()
verwenden, aber es stellt sich heraus, dass ^ die falsche Priorität hat, um als Potenzoperator zu dienen.
Kurz gesagt, es gibt leider nicht viel, was Sie dagegen tun können.
Sie können Operatoren für integrierte Typen nicht überladen. Ich würde operator ^
für diesen Zweck für benutzerdefinierte Typen verwenden.
Tags und Links c++ operator-overloading operators