Pular para o conteúdo

Sobrecarregamento de operadores

Dica publicada em C/C++ / Introdução
Perfil removido removido
Hits: 6.528 Categoria: C/C++ Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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;
};
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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 >>.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Adicionando clientes Windows 7 no Samba PDC

Instalar novas Splash Screens no XFCE

Fazendo o scanner GOTEC funcionar no Mandriva One e superior

Acessando SFTP em modo gráfico com o Konqueror

Como criar um cadastro de clientes no pgadmin3

Gerando números aleatórios em C

Compilando e executando programas em C no Linux

Sites recomendados para estudar linguagem C

Função recursiva para inverter um vetor de caracteres

Checagem de erro do scanf

#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

Entre na sua conta para comentar.