Condividi tramite


Overload degli operatori

operator la parola chiave dichiara specificare di funzione cosa operator-symbol implementa una volta applicato alle istanze di una classe.Ciò fornisce l'operatore più di uno in altre parole, o “lo esegue l'overload di l„.Il compilatore fa distinzione tra i significati diversi di un operatore individuazione dei tipi di propri operandi.

type operator operator-symbol ( parameter-list )

Note

È possibile ridefinire la funzione della maggior parte degli operatori incorporati globalmente o nella classe-da-classe.Operatori di overload vengono implementati come funzioni.

il nome di un operatore di overload è operatorx, dove x l'operatore viene visualizzato nella tabella seguente.Ad esempio, eseguire l'overload dell'operatore di addizione, definire una funzione chiamata operator+.Analogamente, l'overload aggiungi/operatore di assegnazione, +=, definire una funzione chiamata operator+=.

operatori Redefinable

Operatore

Nome

Type

,

Virgola

Binary

!

NOT logico

Unario

!=

Disuguaglianza

Binary

%

Modulo

Binary

%=

Assegnazione di modulo

Binary

&

AND bit per bit

Binary

&

Indirizzo-di

Unario

&&

AND logico

Binary

&=

AND bit per bit assegnazione

Binary

( )

Chiamata di funzione

( )

operatore di cast

Unario

*

Moltiplicazione

Binary

*

Dereferenziazione del puntatore

Unario

*=

assegnazione di moltiplicazione

Binary

+

Addizione

Binary

+

unario più

Unario

++

incremento 1

Unario

+=

Assegnazione di addizione

Binary

Sottrazione

Binary

Negazione unaria

Unario

––

decremento 1

Unario

–=

assegnazione di sottrazione

Binary

–>

Selezione dei membri

Binary

–>*

selezione di Puntatore a membro

Binary

/

Divisione

Binary

/=

assegnazione di divisione

Binary

<

Minore di

Binary

<<

Spostamento a sinistra

Binary

<<=

Assegnazione di spostamento a sinistra

Binary

<=

Minore o uguale a

Binary

=

Assegnazione

Binary

==

Uguaglianza

Binary

>

Maggiore di

Binary

>=

Maggiore o uguale a

Binary

>>

Spostamento a destra

Binary

>>=

Assegnazione di spostamento a destra

Binary

[ ]

L'indice di matrice

^

OR esclusiva

Binary

^=

Assegnazione OR esclusiva

Binary

|

OR inclusivo bit per bit

Binary

|=

Incluso l'operatore OR bit per bit assegnazione

Binary

||

OR logico

Binary

~

Complemento di uno

Unario

delete

Delete

new

New

conversion operators

operatori di conversione

Unario

1 Due versioni dell'incremento e degli operatori di incremento e unari esiste: preincrement e postincrement.

vedere Regole generali per l'overload degli operatori per ulteriori informazioni.I vincoli sulle diverse categorie di operatori di overload sono descritti negli argomenti seguenti:

Gli operatori riportati nella tabella seguente non possono essere sottoposti a overload.La tabella include i simboli del preprocessore # e ##.

operatori di Nonredefinable

Operator

Name

.

Selezione dei membri

.*

selezione di Puntatore a membro

::

Risoluzione ambito

? :

Condizionale

#

Conversione del preprocessore da string

##

il preprocessore concatena

Sebbene gli operatori di overload in genere essere chiamato in modo implicito dal compilatore quando vengono individuati nel codice, è possibile richiamare in modo esplicito la stessa modalità come qualsiasi funzione non membro o il membro è denominata:

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

Esempio

L'esempio seguente è un metodo di overload + operatore per aggiungere due numeri complessi e restituisce il risultato.

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

Output

6.8, 11.2

Vedere anche

Riferimenti

Operatori di C++

Parole chiave C++