Sdílet prostřednictvím


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

Viz také

Referenční dokumentace

Operátory C++

Klíčových slov jazyka C++