Compartilhar via


Sobrecarga de operador

O operator palavra-chave declara uma função especificando o que operator-symbol significa que quando aplicada a instâncias de uma classe.Isso permite que o operador mais de um significado, ou "overloads" ele.O compilador faz distinção entre os significados diferentes de um operador, examinando os tipos dos operandos.

type operator operator-symbol ( parameter-list )

Comentários

Você pode redefinir a função dos operadores mais internos globalmente ou em uma base de classe a classe.Operadores sobrecarregados são implementados como funções.

O nome de um operador sobrecarregado é operatorx, onde x é o operador como ele aparece na tabela a seguir.Por exemplo, para sobrecarregar o operador de adição, você define uma função chamada operator+.Da mesma forma, para sobrecarregar o operador de atribuição de adição/ +=, definir uma função chamada operator+=.

Operadores de redefiníveis

Operador

Nome

Tipo

,

Vírgula

Binário

!

NÃO lógico

Unário

!=

Desigualdade

Binário

%

MODULUS

Binário

%=

Atribuição de módulo

Binário

&

AND bit a bit

Binário

&

Endereço de

Unário

&&

E lógico

Binário

&=

Atribuição de AND bit a bit

Binário

( )

Chamada de função

( )

Operador cast

Unário

*

Multiplicação

Binário

*

Referência de ponteiro

Unário

*=

Atribuição de multiplicação

Binário

+

Adição

Binário

+

Mais unário

Unário

++

Incremento 1

Unário

+=

Atribuição de adição

Binário

Subtração

Binário

Negação unário

Unário

––

Decréscimo 1

Unário

–=

Atribuição de subtração

Binário

–>

Seleção de membro

Binário

–>*

Seleção de ponteiro para membros

Binário

/

Divisão

Binário

/=

Atribuição de divisão

Binário

<

Menor que

Binário

<<

Shift esquerda

Binário

<<=

Atribuição de shift esquerda

Binário

<=

Menor ou igual a

Binário

=

Atribuição

Binário

==

Igualdade

Binário

>

Maior que

Binário

>=

Maior ou igual a

Binário

>>

Shift direita

Binário

>>=

Atribuição de deslocamento à direita

Binário

[ ]

Subscrito da matriz

^

OU exclusivo

Binário

^=

Atribuição de OR exclusiva

Binário

|

BITWISE OR inclusiva

Binário

|=

Bit a bit inclusive atribuição de OR

Binário

||

OR lógico

Binário

~

Complemento de um

Unário

delete

Delete

new

New

conversion operators

Operadores de conversão

Unário

1 Duas versões do operador unário incrementam e decrementar há operadores: preincrement e postincrement.

Consulte Regras gerais para a sobrecarga de operador para obter mais informações.As restrições nas várias categorias de operadores sobrecarregados são descritas nos seguintes tópicos:

Os operadores mostrados na tabela a seguir não podem ser sobrecarregados.A tabela inclui os símbolos de pré-processamento # e ##.

Operadores de Nonredefinable

Operator

Name

.

Seleção de membro

.*

Seleção de ponteiro para membros

::

Resolução de escopo

? :

Condicional

#

Pré-processador convert to string

##

Concatenar do pré-processador

Embora a operadores sobrecarregados são geralmente chamados implicitamente pelo compilador quando eles são encontrados no código, eles podem ser chamados explicitamente da mesma maneira que qualquer membro ou não-membro função é chamada:

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

Exemplo

Sobrecargas de exemplo a seguir a + operador adicionar complexo dois números e retorna o resultado.

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

Saída

6.8, 11.2

Consulte também

Referência

Operadores do C++

Palavras-chave C++