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