Udostępnij za pośrednictwem


Przeładowanie operatora

operator Słowo kluczowe deklaruje funkcję Określanie, co operator-symbol oznacza w przypadku wystąpienia klasy.Zapewnia operator więcej niż jeden, co oznacza, lub "przeciążanie" go.Kompilator rozróżnia inną funkcję operatora przez sprawdzenie typy argumentów.

type operator operator-symbol ( parameter-list )

Uwagi

Funkcja najbardziej wbudowane operatorów można ponownie zdefiniować globalnie lub na podstawie klasy przez klasę.Przeciążone operatory są wykonywane jako funkcje.

Nazwa operatora przeciążenia jest operatorx, gdzie x jest operator, jak w poniższej tabeli.Na przykład, aby operator dodawania, definiowania funkcji o nazwie operator+.Podobnie, aby przeładowania operator dodawania/przypisania +=, zdefiniuj funkcji o nazwie operator+=.

Operatory redefinable

Operator

Nazwa

Typ

,

Przecinek

plików binarnych

!

Logiczne nie

Jednoargumentowy

!=

Nierówność

plików binarnych

%

Modulo

plików binarnych

%=

Modulo i przypisanie

plików binarnych

&

Bitowe ORAZ

plików binarnych

&

Adres

Jednoargumentowy

&&

AND logiczne

plików binarnych

&=

Bitowe AND i przypisanie

plików binarnych

( )

Wywołanie funkcji

( )

Operator rzutowania

Jednoargumentowy

*

Mnożenie

plików binarnych

*

Wskaźnik cofnięcia odwołania

Jednoargumentowy

*=

Mnożenie i przypisanie

plików binarnych

+

Dodawanie

plików binarnych

+

Plus jednoargumentowy

Jednoargumentowy

++

Przyrost 1

Jednoargumentowy

+=

Dodawanie i przypisanie

plików binarnych

Odejmowanie

plików binarnych

negacja jednoargumentowa

Jednoargumentowy

––

Zmniejsz 1

Jednoargumentowy

–=

Odejmowanie i przypisanie

plików binarnych

–>

Wybór elementu członkowskiego

plików binarnych

–>*

Wybór wskaźnik do elementu członkowskiego

plików binarnych

/

Dzielenie

plików binarnych

/=

Dzielenie i przypisanie

plików binarnych

<

Mniejsze niż

plików binarnych

<<

Przesunięcie w lewo

plików binarnych

<<=

Lewy shift przypisania

plików binarnych

<=

Mniejsze niż lub równe

plików binarnych

=

Przypisanie

plików binarnych

==

Równość

plików binarnych

>

Większe niż

plików binarnych

>=

Większe niż lub równe

plików binarnych

>>

Przesunięcie w prawo

plików binarnych

>>=

Prawy shift przypisania

plików binarnych

[ ]

Indeks dolny tablicy

^

LUB wykluczające

plików binarnych

^=

Przypisanie lub wyłączności

plików binarnych

|

Bitowe alternatywne OR

plików binarnych

|=

Bitowe OR alternatywne i przypisanie

plików binarnych

||

OR logiczne

plików binarnych

~

Uzupełnienie jedynkowe

Jednoargumentowy

delete

Delete

new

New

conversion operators

operatory konwersji

Jednoargumentowy

1 Zwiększ dwie wersje jednoargumentowy i zmniejszenie operatorów istnieje: preincrement i postincrement.

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

Nie może być przeciążone operatory wyświetlane w poniższej tabeli.Tabela zawiera symbole preprocessor # i ##.

Operatory Nonredefinable

Operator

Name

.

Wybór elementu członkowskiego

.*

Wybór wskaźnik do elementu członkowskiego

::

Rozpoznawanie zakresu

? :

Warunkowe

#

Konwertuj Preprocessor ciąg

##

Preprocesora połączenia

Mimo że przeciążenia operatory są zwykle nazywane niejawnie przez kompilator po ich napotkaniu w kodzie, może być wykorzystywane jawnie taki sam sposób jak każdy członek lub nie przynależącego funkcja jest wywoływana:

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

Przykład

Następujący przykład przeciążenia + operator, aby dodać złożonych dwie liczby 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łowa kluczowe języka C++