Sobrecarregando operadores em C++

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:
.
.*
::
?:

Nenhum comentário:

Ratings:

Avaliação deste artigo

Copyright © Programming @ home