Sobrecarregamento de operadores

Publicado por Perfil removido em 13/12/2004

[ Hits: 5.984 ]

 


Sobrecarregamento de operadores



Em C++ é possível construir classes e utilizar os operadores da linguagem (++, --, [], ==, etc) para realizar operações nas suas classes. Isso chama-se sobrecarregamento de operadores. É muito simples de se usar e muito útil, além de deixar suas classes com um ar digamos assim, mais profissional. Para operadores unários, como o ++ ou o [], o sobrecarregamento pode ser feito dentro da declaração da classe, assim:

class teste {
public:
teste() { count = 0; };

int operator[](int i) { return vetor[i]; };
int operator++(int i) { return count += i;};
int operator*() { return count; };

protected:
int vetor[10];
int count;
};

Já para os operadores binários (==, <=, etc), a declaração pode ser feita fora da classe, assim:

inline bool operator==(teste &t1, teste &t2) {
if ( *t1 != *t2 )
return false;
int i;
for(i = 0; i < *t1 && t1[i] == t2[i]; i++)
;
if ( i == *t1 )
return true;
return false;
}

Veja que aqui eu já uso os operadores sobrecarregados na declaração da classe (* e []). Qualquer operador da linguagem pode ser sobrecarregado. Dois muito interessantes são o << e o >>, usados em entrada e saída.

Para sobrecarregá-los faça assim:

inline &ostream operator<<(ostream &file, teste &t) {
for(int i = 0; i < *t; i++)
file << t[i];
}

Agora você pode usar a construção

count << t

para imprimir um objeto da classe teste. O mesmo pode ser feito para entrada, basta mudar os argumentos de ostream para istream e o operador de << para >>.

Outras dicas deste autor

Efeito Expose no Ubuntu

Configurando modem PC-TEL

"Tentando" fazer com que programas rodem no Wayland e no X11

Configurando DVD via porta USB no Ubuntu

Como executar o BlueGriffon (DreamWeaver do Linux) [Vídeo]

Leitura recomendada

Função recursiva para inverter um vetor de caracteres

Compilando e executando programas em C no Linux

Obtendo a data e a hora de compilação em C

O poder do #define

Série de Fibonacci usando recursividade em linguagem C

  

Comentários
[1] Comentário enviado por scottys0 em 13/12/2004 - 12:09h

só um comentario ... o sobrecarregamento é uma palavra meio feia ... que não condiz com a funcionalidade.
O termo correto utilizado em livros e discussões é Sobrecarga de Operadores

[2] Comentário enviado por FelipeAbella em 09/11/2005 - 15:12h

Há dias eu procuro sobre o assunto!
Me foi útil



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts