Udostępnij za pośrednictwem


Przeciążanie

operator Słowa kluczowego deklaruje funkcję Określanie, co operator-symbol oznacza, że stosowane do wystąpienia klasy.Daje rozumieniu więcej niż jeden operator lub "overloads" go.Kompilator rozróżnia między różne znaczenie operator poprzez zbadanie typy argumentów.

type operator operator-symbol ( parameter-list )

Uwagi

Możesz zmienić definicję funkcji wbudowanych najbardziej operatorów globalnie lub na podstawie klasy przez klasę.Przeciążone operatory są implementowane jako funkcje.

Nazwa operatora przeciążonego jest operatorx, gdzie x jest operatorem pojawiającej się w poniższej tabeli.Na przykład, przeciążyć operatora dodawania, można zdefiniować funkcję o nazwie operator+.Podobnie, przeciążyć operatora dodawania/przydziału +=, zdefiniować funkcję o nazwie operator+=.

Redefinable operatory

Operator

Nazwa

Typ

,

Przecinek

Binarne

!

Logiczne NOT

Jednoargumentowy

!=

Nierówności

Binarne

%

Moduł

Binarne

%=

Moduł przypisania

Binarne

&

Iloczynu (AND)

Binarne

&

Adres od

Jednoargumentowy

&&

Logiczne I

Binarne

&=

Przypisanie z bitowym AND

Binarne

( )

Wywołanie funkcji

( )

Operator rzutowania

Jednoargumentowy

*

Mnożenie

Binarne

*

Wskaźnik nieprawidłowego

Jednoargumentowy

*=

Przypisanie mnożenia

Binarne

+

Dodanie

Binarne

+

Plus jednoargumentowy

Jednoargumentowy

++

Przyrost 1

Jednoargumentowy

+=

Przypisanie z dodawaniem

Binarne

Odejmowanie

Binarne

Negacja jednoargumentowy

Jednoargumentowy

––

Osłabienie 1

Jednoargumentowy

–=

Przypisanie odejmowania

Binarne

–>

Wybór elementu członkowskiego

Binarne

–>*

Wybór wskaźnik do elementu członkowskiego

Binarne

/

Rejon

Binarne

/=

Przypisanie z dzieleniem

Binarne

<

Mniej niż

Binarne

<<

Lewy shift

Binarne

<<=

Przypisanie lewy shift

Binarne

<=

Mniejsze lub równe

Binarne

=

Przypisania

Binarne

==

Równości

Binarne

>

Większe niż

Binarne

>=

Większe niż lub równe

Binarne

>>

Prawy shift

Binarne

>>=

Przypisanie prawy shift

Binarne

[ ]

Indeks dolny tablicy

^

Wyłączne OR

Binarne

^=

Wyłączne lub przypisania

Binarne

|

Bitowe włącznie lub

Binarne

|=

Bitowe włącznie lub przypisania

Binarne

||

Logiczne OR

Binarne

~

Jedynkowe

Jednoargumentowy

delete

Delete

new

New

conversion operators

Operatory konwersji

Jednoargumentowy

1 Przyrost wartości dwie wersje jednoargumentowe i istnieje osłabienie podmiotów: preincrement i postincrement.

Zobacz Ogólne zasady przeciążanie operatora Aby uzyskać więcej informacji.Ograniczenia dotyczące różnych kategorii przeciążone operatory są opisane w następujących tematach:

Nie można obciążać operatorów, pokazane w poniższej tabeli.Tabela zawiera symboli preprocesora # i ##.

Operatory Nonredefinable

Operator

Name

.

Wybór elementu członkowskiego

.*

Wybór wskaźnik do elementu członkowskiego

::

Zakres rozdzielczości

? :

Warunkowe

#

Konwertuj preprocesora na ciąg

##

Złączanie preprocesora

Chociaż przeciążone operatory są zazwyczaj nazywane niejawnie przez kompilator po napotkaniu w kodzie, te mogą być wywoływane jawnie taki sam sposób, jak każdy członek lub wywoływana jest funkcja prawodawstwa wspólnotowego:

Point pt;
pt.operator+( 3 );  // Call addition operator to add 3 to pt.

Przykład

Overloads następującą przykład + operatora, aby dodać złożonym dwóch liczb i zwraca wynik.

// 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();
}

Dane wyjściowe

6.8, 11.2

Zobacz też

Informacje

Operatory języka C++

Słów kluczowych języka C++