Olá,
Os compiladores de C++ possui definições padrão para os operadores.
Ex:
int + int
float + float
...
E assim, por diante.
Mas, para a maioria deles a soma de duas cadeias de caractéres é um erro.
Exemplo de código inválido:
...
char* str1 = "aaa";
char* str2 = "bbb";
char* str3 = str1 + str2;
Mas, muitos compiladores (e.g: g++, bcc32) permitem sobrecarga de operador. Ou seja, é adicionar uma nova assinatura (sem alterar o número de argumentos) e comportamento a um operador.
Ex:
Podemos fazer com que seja possível somar um double com um array de char. Isso é muito esquisito, então, vamos fazer com que seja possível somar duas cadeias de caractéres.
A sobrecarga de operador aplica-se indivudualmente as classes (talvez, haja um jeito de sobrecarregar para todas).
A sintaxe é:
tipo-retorno nome-classe::operator # (lista-argumentos)
Nesse link está a minha classe
String.
O operador de adição foi sobrecarregado para receber um ponteiro de char (cadeia de caractéres) e concatenar com o buffer corrente e incrementar a variável que denota o tamanho da string.
Agora, é possível fazer a seguinte operação:
String str1 = "aaa";
String str2 = str1 + "vvv";
Mas, não é possível imprimir na tela o objeto de uma string.
Exemplo de código inválido:
String str1 = "sss";
cout << str1;
Então, para que o código de cima seja válido temos de sobrecarregar o operador "<<" de um cout.
No mesmo link esse operador já foi sobrecarregado.
Não é permitido sobrecarregar:
.
.*
::
?:
Passed in SCBCD 5 exam
Há 14 anos
Nenhum comentário:
Postar um comentário