C ++

Sobrecarga de operador C ++

Sobrecarga de operador C ++
Este artigo fornece um guia para sobrecarga de operador em C++. A sobrecarga do operador é um recurso útil e poderoso da linguagem de programação C ++. C ++ permite sobrecarregar a maioria dos operadores integrados. Neste tutorial, usaremos vários exemplos para demonstrar o mecanismo de sobrecarga do operador.

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:

  1. Exemplo 1: Sobrecarga de operador unário (1)
  2. Exemplo 2: Sobrecarga de operador unário (2)
  3. Exemplo 3: Sobrecarga de operador binário
  4. 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.

#incluir
usando 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”.

#incluir
usando 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”.

#incluir
usando 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 ”.

#incluir
usando 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.

Melhores distros Linux para jogos em 2021
O sistema operacional Linux percorreu um longo caminho desde sua aparência original, simples e baseada em servidor. Este sistema operacional melhorou ...
Como capturar e transmitir sua sessão de jogo no Linux
No passado, jogar era considerado apenas um hobby, mas com o tempo a indústria de jogos viu um grande crescimento em termos de tecnologia e número de ...
Melhores jogos para jogar com rastreamento manual
Oculus Quest introduziu recentemente a grande ideia de rastreamento manual sem controladores. Com um número cada vez maior de jogos e atividades que e...