Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Słowo operator
kluczowe deklaruje funkcję określającą, co oznacza operator-symbol po zastosowaniu do wystąpień klasy. Daje to operatorowi więcej niż jedno znaczenie lub "przeciąża". Kompilator rozróżnia różne znaczenia operatora, sprawdzając typy jego operandów.
Składnia
type
operator
operator-symbol ( lista-parametrów )
Uwagi
Funkcję większości wbudowanych operatorów można zdefiniować globalnie lub na podstawie klasy. Przeciążone operatory są implementowane jako funkcje.
Nazwa przeciążonego operatora to operator
x, gdzie x jest operatorem, jak pokazano w poniższej tabeli. Na przykład aby przeciążyć operator dodawania, należy zdefiniować funkcję o nazwie operator+. Podobnie, aby przeciążyć operator dodawania/przypisania, +=zdefiniuj funkcję o nazwie operator+=.
Operatory możliwe do ponownego zdefiniowania
Operator | Nazwisko | Typ |
---|---|---|
, | Comma | Plik binarny |
! | Not logiczny | Jednoargumentowy |
!= | Nierówność | Plik binarny |
% | Modulo | Plik binarny |
%= | Modulo i przypisanie | Plik binarny |
& | Bitowe AND | Plik binarny |
& | Adres | Jednoargumentowy |
&& | AND logiczne | Plik binarny |
&= | Bitowe AND i przypisanie | Plik binarny |
( ) | Wywoływanie funkcji | — |
( ) | Operator rzutowania | Jednoargumentowy |
* |
Mnożenie | Plik binarny |
* |
Wyłusczenie wskaźnika | Jednoargumentowy |
*= |
Mnożenie i przypisanie | Plik binarny |
+ | Dodatek | Plik binarny |
+ | Jednoargumentowy plus | Jednoargumentowy |
++ | Przyrost 1 | Jednoargumentowy |
+= | Dodawanie i przypisanie | Plik binarny |
- | Odejmowanie | Plik binarny |
- | negacja jednoargumentowa | Jednoargumentowy |
-- | Dekrementacja 1 | Jednoargumentowy |
-= | Odejmowanie i przypisanie | Plik binarny |
-> | Wybór elementu członkowskiego | Plik binarny |
->* |
Wybór wskaźnika do elementu członkowskiego | Plik binarny |
/ | Dział | Plik binarny |
/= | Dzielenie i przypisanie | Plik binarny |
< | Mniejsze niż | Plik binarny |
<< | Przesunięcie w lewo | Plik binarny |
<<= | Przypisanie przesunięcia w lewo | Plik binarny |
<= | Mniejsze niż lub równe | Plik binarny |
= | Przypisywanie | Plik binarny |
== | Równość | Plik binarny |
> | Większe niż | Plik binarny |
>= | Większe niż lub równe | Plik binarny |
>> | Przesunięcie w prawo | Plik binarny |
>>= | Przypisywanie przesunięcia w prawo | Plik binarny |
[ ] | Indeks dolny tablicy | — |
^ | Wyłączny LUB | Plik binarny |
^= | Przypisanie na wyłączność LUB | Plik binarny |
| | Bitowe alternatywne OR | Plik binarny |
|= | Bitowe OR alternatywne i przypisanie | Plik binarny |
|| | OR logiczne | Plik binarny |
~ | Uzupełnienie jedynkowe | Jednoargumentowy |
delete |
Delete | — |
new |
Nowe | — |
operatory konwersji | operatory konwersji | Jednoargumentowy |
1 Istnieją dwie wersje operatorów przyrostu jednoargumentowego i dekrementacji: wstępne zwiększanie i przyrost.
Aby uzyskać więcej informacji, zobacz Ogólne reguły przeciążania operatorów. Ograniczenia dotyczące różnych kategorii przeciążonych operatorów opisano w następujących tematach:
Operatory pokazane w poniższej tabeli nie mogą być przeciążone. Tabela zawiera symbole # preprocesora i ##.
Operatory niezdefiniowalne
Operator | Nazwisko |
---|---|
. | Wybór elementu członkowskiego |
.* |
Wybór wskaźnika do elementu członkowskiego |
:: | Rozpoznawanie zakresu |
? : | Warunkowe |
# | Preprocesor konwertuj na ciąg |
## | Łączenie preprocesora |
Mimo że przeciążone operatory są zwykle wywoływane niejawnie przez kompilator po napotkaniu ich w kodzie, można je wywołać jawnie w taki sam sposób, jak każda funkcja składowa lub inna niż liczba jest wywoływana:
Point pt;
pt.operator+( 3 ); // Call addition operator to add 3 to pt.
Przykład
Poniższy przykład przeciąża operator, + aby dodać dwie liczby zespolone i zwrócić 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();
}
6.8, 11.2
W tym obszarze
Zobacz też
Wbudowane operatory, pierwszeństwo i kojarzenie języka C++
Słowa kluczowe