Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Nyckelordet operator deklarerar en funktion som anger vad operator-symbol betyder när det tillämpas på instanser av en klass. Detta ger operatorn mer än en betydelse, eller "överbelastar" den. Kompilatorn skiljer mellan de olika betydelserna för en operator genom att undersöka typerna av dess operander.
Syntax
typ
operatoroperator-symbol(parameter-list)
Anmärkningar
Du kan omdefiniera funktionen för de flesta inbyggda operatorer globalt eller klass för klass. Överbelastade operatorer implementeras som funktioner.
Namnet på en överbelastad operator är operatorx, där x är operatorn som den visas i följande tabell. Om du till exempel vill överbelasta additionsoperatorn definierar du en funktion som kallas operator+. Om du vill överbelasta additions-/tilldelningsoperatorn +=definierar du på samma sätt en funktion som kallas operator+=.
Omdefinierbara operatorer
| Operatör | Namn | Typ |
|---|---|---|
| , | Komma | Binär |
| ! | Logiskt INTE | Unär |
| != | Olikhet | Binär |
| % | Modulus | Binär |
| %= | Modulus-tilldelning | Binär |
| & | Bitvis OCH | Binär |
| & | Adress till | Unär |
| && | Logiskt OCH | Binär |
| &= | Bitvis OCH tilldelning | Binär |
| ( ) | Funktionssamtal | — |
| ( ) | Gjuten operator | Unär |
* |
Multiplikation | Binär |
* |
Pekaravreference | Unär |
*= |
Multiplikationstilldelning | Binär |
| + | Tillägg | Binär |
| + | Unary Plus | Unär |
| ++ | Steg 1 | Unär |
| += | Tilläggstilldelning | Binär |
| - | Subtraktion | Binär |
| - | Unary negation | Unär |
| -- | Minskning 1 | Unär |
| -= | Subtraktionstilldelning | Binär |
| -> | Val av medlem | Binär |
->* |
Val av pekare till medlem | Binär |
| / | avdelning | Binär |
| /= | Divisionstilldelning | Binär |
| < | Mindre än | Binär |
| << | Vänster skifte | Binär |
| <<= | Vänster skifttilldelning | Binär |
| <= | Mindre än eller lika med | Binär |
| = | Uppgift | Binär |
| == | Jämlikhet | Binär |
| > | Större än | Binär |
| >= | Större än eller lika med | Binär |
| >> | Höger skift | Binär |
| >>= | Höger skifttilldelning | Binär |
| [ ] | Matris underordnad | — |
| ^ | Exklusivt ELLER | Binär |
| ^= | Exklusiv ELLER-tilldelning | Binär |
| | | Bitvis inkluderande ELLER | Binär |
| |= | Bitvis inkluderande ELLER-tilldelning | Binär |
| || | Logiskt ELLER | Binär |
| ~ | Ens komplement | Unär |
delete |
Ta bort | — |
new |
Nytt | — |
| konverteringsoperatorer | konverteringsoperatorer | Unär |
1 Två versioner av operatorerna unary increment och decrement finns: preincrement och postincrement.
Mer information finns i Allmänna regler för överlagring av operatorer . Begränsningarna för de olika kategorierna av överlagrade operatorer beskrivs i följande avsnitt:
Operatorerna som visas i följande tabell kan inte överbelastas. Tabellen innehåller preprocessorsymbolerna # och ##.
Icke-odefinierbara operatorer
| Operatör | Namn |
|---|---|
| . | Val av medlem |
.* |
Val av pekare till medlem |
| :: | Omfångsmatchning |
| ? : | Villkorlig |
| # | Konvertera förprocessor till sträng |
| ## | Sammanfogning av förprocessor |
Även om överbelastade operatorer vanligtvis anropas implicit av kompilatorn när de påträffas i kod, kan de anropas explicit på samma sätt som någon medlem eller icke-medlem-funktion anropas:
Point pt;
pt.operator+( 3 ); // Call addition operator to add 3 to pt.
Exempel
I följande exempel överbelastas operatorn + för att lägga till två komplexa tal och returnerar resultatet.
// operator_overloading.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
struct Complex {
Complex( double r, double i ) : re(r), im(i) {}
Complex operator+( Complex &other );
void Display( ) { cout << re << ", " << im << endl; }
private:
double re, im;
};
// Operator overloaded using a member function
Complex Complex::operator+( Complex &other ) {
return Complex( re + other.re, im + other.im );
}
int main() {
Complex a = Complex( 1.2, 3.4 );
Complex b = Complex( 5.6, 7.8 );
Complex c = Complex( 0.0, 0.0 );
c = a + b;
c.Display();
}
6.8, 11.2
I det här avsnittet
Se även
C++ Inbyggda operatorer, prioritet och associativitet
nyckelord