O que é operador?
Um operador é um símbolo que indica ao compilador para realizar uma operação particular. Por exemplo, existem vários tipos de operadores em C ++, como operadores aritméticos, operadores lógicos, operadores relacionais, operadores de atribuição, operadores bit a bit e muito mais.
O que é sobrecarga do operador?
A linguagem C ++ permite que os programadores dêem significados especiais aos operadores. Isso significa que você pode redefinir o operador para tipos de dados definidos pelo usuário em C++. Por exemplo, “+” é usado para adicionar tipos de dados integrados, como int, float, etc. Para adicionar dois tipos de dados definidos pelo usuário, é necessário sobrecarregar o operador “+”.
Sintaxe para sobrecarga de operador
C ++ fornece uma função especial chamada "operador" para sobrecarga de operador. A seguir está a sintaxe para sobrecarga de operador:
classe sampleClass…
Público:
símbolo do operador returnType (argumentos)
…
…
;
Aqui, “operador” é uma palavra-chave e “símbolo” é o operador que queremos sobrecarregar.
Exemplos
Agora que você entende o conceito geral de sobrecarga de operador, vamos examinar alguns programas de exemplo de trabalho para você entender essa ideia de forma mais concreta. Cobriremos os seguintes exemplos:
- Exemplo 1: Sobrecarga de operador unário (1)
- Exemplo 2: Sobrecarga de operador unário (2)
- Exemplo 3: Sobrecarga de operador binário
- Exemplo 4: Sobrecarga de operador relacional
Exemplo 1: Sobrecarga de operador unário (1)
Neste exemplo, vamos demonstrar como um operador unário pode ser sobrecarregado em C++. Definimos a classe, “Square_Box,” e as funções públicas, “operator ++ ()” e “operator ++ (int),” para sobrecarregar os operadores de incremento de prefixo e pós-fixados. Na função “main ()”, criamos o objeto “mySquare_Box1.”Em seguida, aplicamos os operadores de incremento de prefixo e pós-correção ao objeto“ mySquare_Box1 ”para demonstrar a sobrecarga do operador unário.
#incluirusando namespace std;
classe Square_Box
privado:
comprimento do flutuador;
largura do flutuador;
altura do flutuador;
público:
Caixa quadrada()
Square_Box (float l, float w, float h)
comprimento = l;
largura = w;
altura = h;
// Sobrecarga do operador - operador de prefixo "++"
operador void ++ ()
comprimento ++;
largura ++;
altura ++;
// Sobrecarga do operador - operador postfix "++"
operador void ++ (int)
comprimento ++;
largura ++;
altura ++;
saída vazia ()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
int main ()
Square_Box mySquare_Box1 (3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.resultado();
mySquare_Box1 ++;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.resultado();
++mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.resultado();
return 0;
Exemplo 2: Sobrecarga de operador unário (2)
Este é outro exemplo em que demonstraremos como um operador unário pode ser sobrecarregado em C++. Definimos a classe, “Square_Box,” e as funções públicas, “operator - ()” e “operator - (int),” para sobrecarregar os operadores de decremento de prefixo e pós-fixos. Na função “main ()”, criamos o objeto “mySquare_Box1”. Em seguida, aplicamos os operadores de decremento de prefixo e pós-correção ao objeto “mySquare_Box1”.
#incluirusando namespace std;
classe Square_Box
privado:
comprimento do flutuador;
largura do flutuador;
altura do flutuador;
público:
Caixa quadrada()
Square_Box (float l, float w, float h)
comprimento = l;
largura = w;
altura = h;
// Sobrecarga do operador - operador de prefixo "-"
operador void - ()
comprimento--;
largura--;
altura--;
// Operator Overloading - "-" operador postfix
operador void - (int)
comprimento--;
largura--;
altura--;
saída vazia ()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
int main ()
Square_Box mySquare_Box1 (3.0, 5.0, 6.0);
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.resultado();
mySquare_Box1--;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.resultado();
--mySquare_Box1;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.resultado();
return 0;
Exemplo 3: Sobrecarga de operador binário
Agora, veremos um exemplo de sobrecarga de operador binário. A sintaxe para sobrecarga de operador binário será um pouco diferente da sobrecarga de operador unário. Neste exemplo, vamos sobrecarregar o operador “+” para adicionar dois objetos “Square_Box”.
#incluirusando namespace std;
classe Square_Box
privado:
comprimento do flutuador;
largura do flutuador;
altura do flutuador;
público:
Caixa quadrada()
Square_Box (float l, float w, float h)
comprimento = l;
largura = w;
altura = h;
// Sobrecarga do operador - operador "+"
Operador Square_Box + (const Square_Box & obj)
Square_Box temp;
temp.comprimento = comprimento + obj.comprimento;
temp.largura = largura + obj.largura;
temp.altura = altura + obj.altura;
return temp;
saída nula ()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
int main ()
Square_Box mySquare_Box1 (3.0, 5.0, 6.0), mySquare_Box2 (2.0, 3.0, 5.0), resultado;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.resultado();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.resultado();
resultado = mySquare_Box1 + mySquare_Box2;
cout << "Dimensions of resultant square box = " << endl;
resultado.resultado();
return 0;
Exemplo 4: Sobrecarga de operador relacional
Agora, veremos um exemplo de sobrecarga de operador relacional. A sintaxe para sobrecarga de operador relacional é como a da sobrecarga de operador binário. Neste exemplo, vamos sobrecarregar o “<” and “>”Operadores para aplicar aos objetos“ Square_Box ”.
#incluirusando namespace std;
classe Square_Box
privado:
comprimento do flutuador;
largura do flutuador;
altura do flutuador;
público:
Caixa quadrada()
Square_Box (float l, float w, float h)
comprimento = l;
largura = w;
altura = h;
// Sobrecarga do operador - "<" operator
operador bool < (const Square_Box& obj)
if (comprimento < obj.length)
return true;
senão
retorna falso;
// Sobrecarga do operador - operador ">"
operador bool> (const Square_Box & obj)
if (comprimento> obj.comprimento)
return true;
senão
retorna falso;
saída vazia ()
cout << "\tLength = " << length << endl;
cout << "\tWidth = " << width << endl;
cout << "\tHeight = " << height << endl;
cout << endl;
;
int main ()
Square_Box mySquare_Box1 (2.0, 3.0, 5.0), mySquare_Box2 (4.0, 6.0, 8.0);
resultado bool;
cout << "Dimensions of mySquare_Box1 = " << endl;
mySquare_Box1.resultado();
cout << "Dimensions of mySquare_Box2 = " << endl;
mySquare_Box2.resultado();
resultado = mySquare_Box1 < mySquare_Box2;
cout << "mySquare_Box1 < mySquare_Box2 = " << result < mySquare_Box2;
cout < mySquare_Box2 = " << result << endl;
return 0;
Conclusão
C ++ é uma linguagem de programação flexível e de uso geral amplamente usada em uma variedade de domínios. Esta linguagem de programação suporta polimorfismo de tempo de compilação e tempo de execução. Este artigo mostrou como realizar a sobrecarga do operador em C++. Este é um recurso muito útil do C ++ que adiciona algum esforço extra para o desenvolvedor definir o operador para sobrecarga, mas definitivamente torna a vida mais fácil para o usuário da classe.