Přetížení operátoru
operator Klíčové slovo deklaruje funkci určení položek, které operator-symbol znamená při použití instance třídy.Tento nástroj umožňuje operátorovi více než jeden význam nebo "přetížení" ji.Kompilátor rozlišuje mezi různé význam operátor tak, že prověříte typy jeho operandy.
type operator operator-symbol ( parameter-list )
Poznámky
Funkce nejvíce integrovaných operátory můžete upravit globálně nebo na základě třídy podle třídy.Přetížených operátory jsou implementovány jako funkce.
Název přetížených operátor je operatorx, kde x je operátor, v jakém je zobrazen v následující tabulce.Můžete například k přetížení metody operátor sčítání, definujete funkci s názvem operator+.Stejně tak, aby přetížení operátoru sčítání/přiřazení +=, definovat funkci s názvem operator+=.
Redefinable operátory
Operátor |
Name |
Typ |
---|---|---|
, |
Čárka |
binární |
! |
Logický operátor NOT |
Unární |
!= |
Nerovnost |
binární |
% |
Modulus |
binární |
%= |
Přiřazení modulus |
binární |
& |
Bitový operátor AND |
binární |
& |
Adresa |
Unární |
&& |
Logický operátor AND |
binární |
&= |
Přiřazení bitového operátoru AND |
binární |
( ) |
Volání funkce |
— |
( ) |
Operátor přetypování |
Unární |
* |
Násobení |
binární |
* |
Ukazatel přistoupit přes ukazatel |
Unární |
*= |
Přiřazení násobení |
binární |
+ |
Sčítání |
binární |
+ |
Unární Plus |
Unární |
++ |
Přírůstek 1 |
Unární |
+= |
Přiřazení sčítání |
binární |
– |
Odčítání |
binární |
– |
Unární negace |
Unární |
–– |
Snížení hodnoty 1 |
Unární |
–= |
Přiřazení odčítání |
binární |
–> |
Výběr členů |
binární |
–>* |
Člen ukazatele výběr |
binární |
/ |
Dělení |
binární |
/= |
Přiřazení dělení |
binární |
< |
Menší než |
binární |
<< |
Posun doleva |
binární |
<<= |
Levý shift přiřazení |
binární |
<= |
Menší nebo rovno |
binární |
= |
Přiřazení |
binární |
== |
Rovnost |
binární |
> |
Větší než |
binární |
>= |
Větší nebo rovno |
binární |
>> |
Posun doprava |
binární |
>>= |
Pravý shift přiřazení |
binární |
[ ] |
Dolní index pole |
— |
^ |
Exclusive OR |
binární |
^= |
Výhradní OR přiřazení |
binární |
| |
Bitový inkluzivní operátor OR |
binární |
|= |
Přiřazení s bitovým operátorem OR |
binární |
|| |
Logický operátor OR |
binární |
~ |
Doplněk |
Unární |
delete |
Delete |
— |
new |
New |
— |
conversion operators |
operátory převodu |
Unární |
1 zvětšit dvě verze Unární a existovat snížení hodnoty operátorů: preincrement a postincrement.
Podívejte se na téma obecných pravidel pro operátor přetížení Další informace.Omezení na různých kategorií přetížených operátory jsou popsány v následujících tématech:
Nemohou být přetíženy operátory uvedeny v následující tabulce.Tabulka obsahuje symboly preprocessor # a ##.
Nonredefinable operátory
Operator |
Name |
. |
Výběr členů |
.* |
Člen ukazatele výběr |
:: |
Rozlišení rozsahu |
? : |
Podmiňovací operátor |
# |
Preprocessor převést na řetězec |
## |
Preprocessor zřetězit |
Přestože přetížených operátory jsou obvykle volány implicitně kompilátor vyskytne v kódu, uživatelé mohou být vyvolány explicitně stejně jako libovolný člen nebo je volána funkce nečlenský:
Point pt;
pt.operator+( 3 ); // Call addition operator to add 3 to pt.
Příklad
Následující příklad přetížení + operátor přidat dvě komplexního čísla a vrátí výsledek.
// 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();
}
Výstup
6.8, 11.2