Operátor přetížení
operator Klíčové slovo deklaruje funkci určení operator-symbol znamená při použití instance třídy.Poskytuje více smyslu provozovatel nebo "overloads" ji.Kompilátor rozlišuje mezi různé významy porovnáním typy operandů operátor.
type operator operator-symbol ( parameter-list )
Poznámky
Funkce nejvíce vestavěné operátory můžete předefinovat globálně nebo na základě třídy podle třídy.Přetížené operátory jsou implementovány jako funkce.
Název přetíženého operátoru je operatorx, kde x je operátor, jak je uvedena v následující tabulce.Například chcete-li přetížit operátor sčítání definujete funkci nazvanou operator+.Podobně, operátor sčítání nebo přiřazení zahlcení +=, definovat funkci nazvanou operator+=.
Redefinable operátory
Operátor |
Název |
Type |
---|---|---|
, |
Čárka |
Binární |
! |
Logické ne |
Unární |
!= |
Nerovnost |
Binární |
% |
MODULUS |
Binární |
%= |
Přiřazení modulo |
Binární |
& |
Bitový operátor AND |
Binární |
& |
Z adresy |
Unární |
&& |
Logické A |
Binární |
&= |
Přiřazení bitového operátoru AND |
Binární |
( ) |
Volání funkce |
— |
( ) |
Operátoru přetypování |
Unární |
* |
Násobení |
Binární |
* |
Zrušit reference struktury 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í minus |
Unární |
–– |
Snižovat 1 |
Unární |
–= |
Přiřazení odčítání |
Binární |
–> |
Výběr členů |
Binární |
–>* |
Výběr ukazatele myši na člena |
Binární |
/ |
Divize |
Binární |
/= |
Přiřazení dělení |
Binární |
< |
Menší než |
Binární |
<< |
Levý shift |
Binární |
<<= |
Přiřazení levý shift |
Binární |
<= |
Menší nebo rovno |
Binární |
= |
Přiřazení |
Binární |
== |
Rovnost |
Binární |
> |
Větší než |
Binární |
>= |
Větší než nebo rovno |
Binární |
>> |
Pravý shift |
Binární |
>>= |
Přiřazení pravý shift |
Binární |
[ ] |
Index matice |
— |
^ |
Exclusive OR |
Binární |
^= |
Výhradní nebo přiřazení |
Binární |
| |
Bitové včetně nebo |
Binární |
|= |
Bitové včetně nebo přiřazení |
Binární |
|| |
Logické OR |
Binární |
~ |
Jedničkový |
Unární |
delete |
Delete |
— |
new |
New |
— |
conversion operators |
Operátory převodu |
Unární |
1 Dvě verze unární zvyšovat a snižovat operátory existují: preincrement a postincrement.
Viz Obecná pravidla pro operátor přetížení Další informace.Omezení pro různé kategorie přetížené operátory jsou popsány v následujících tématech:
Nesmí být přetížené operátory uvedené v následující tabulce.Zahrnuje symboly preprocesoru # a ##.
Nonredefinable operátory
Operator |
Name |
. |
Výběr členů |
.* |
Výběr ukazatele myši na člena |
:: |
Rozsah rozlišení |
? : |
Podmíněné |
# |
Preprocesoru převést na řetězec |
## |
Předprocesoru concatenate |
Ačkoli přetížené operátory jsou obvykle volány implicitně kompilátor když narazí v kódu, které lze vyvolat explicitně stejným způsobem jako kterýkoli člen nebo volání 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řidání dvou komplexních čísel 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ýsledek
6.8, 11.2