O que é Sobrecarga em C ++?

O C ++ permite escrever código flexível e fácil de entender usando o conceito conhecido como Sobrecarga. Ele permite obter diferentes funcionalidades dentro do código existente com alterações mínimas, reduzindo assim o código duplicado. Basicamente, existem principalmente dois tipos principais de sobrecarga suportados pelo C ++.

O C ++ permite escrever funções com o mesmo nome, mas com a diferença nos tipos de dados ou no número de argumentos passados, esse recurso é conhecido como Sobrecarga de Funções no C ++. Esse recurso permite que os desenvolvedores definam as funções com o mesmo nome no mesmo escopo. Com o mesmo nome, as funções representam a mesma funcionalidade, permitindo alcançar o polimorfismo em tempo de compilação. A sobrecarga de função tem uma vantagem de melhorar a legibilidade do código.

Há outro recurso fornecido no C ++ que permite redefinir a funcionalidade existente dos operadores internos, conhecida como Sobrecarga de Operador . Esse recurso permite o uso de operadores internos em tipos definidos pelo usuário. A sobrecarga do operador simplifica o código, redefinindo a funcionalidade conforme os requisitos do usuário. Neste artigo, focaremos tanto a sobrecarga de funções quanto a sobrecarga de operadores, veremos os detalhes e como é usada em C ++.

Como funciona a sobrecarga em C ++?

  • Sobrecarga de Função: Permite definir a função com o mesmo nome, mas distingue as funções dependendo do tipo de parâmetros transmitidos a elas ou do número de parâmetros transmitidos a elas. Portanto, todas as funções terão o mesmo nome, mas terão um tipo de dados diferente ou um número diferente de parâmetros passados ​​para ele. Quando a função é chamada, o compilador escolherá a função com o tipo de parâmetro correspondente e o número de argumentos. Agora, seus desenvolvedores podem escolher qual função chamar de acordo com os requisitos. Eles podem escolher a função apropriada passando os parâmetros seguindo as regras.
  • Sobrecarga do operador: Permite que os operadores trabalhem para tipos de dados definidos pelo usuário, ou seja, classes. Os operadores existentes estão sobrecarregados e têm o poder de operar na classe e nos objetos definidos pelo usuário. A sobrecarga do operador é obtida definindo a função com o nome especial. A função terá o nome 'operator' seguido pelo símbolo do operador. Podemos usar o símbolo do operador diretamente no tipo de dados definido pelo usuário e executar a operação. A ação ou operação necessária é definida nessa função especial por nós. Por meio da sobrecarga do operador, podemos executar operações de diferentes tipos no mesmo tipo de dados.

Tipos de sobrecarga em C ++

A sobrecarga de funções pode ser alcançada de qualquer maneira em termos de uso de parâmetros. Quando dizemos uso de parâmetros a que se refere, tipo de parâmetros ou contagem de parâmetros ou sequência de parâmetros. Portanto, a função calc (int x, float y) com parâmetros (int x, float y) é diferente de uma função definida como calc (float x, int y) que possui parâmetros diferentes com o tipo de dados diferente.

Pode haver vários tipos nos quais a sobrecarga de funções pode ser alcançada. Vamos ver o exemplo simples de sobrecarga de funções em C ++.

#include
using namespace std;
class Display (
public:
static void show (char message() ) (
cout<< "Only Message:" << message << endl;
)
static void show (int messageId, char message()) (
cout<< "Message with Id:";
cout << messageId << " Message:" << message << endl;
)
);
int main (void) (
Display obj;
char message() = "Welcome";
int messageId = 10;
obj.show(message); //calling overloaded function with 1 parameter
obj.show(messageId, message);//calling overloaded function with 2 parameters
return 0;
)

Aqui, temos a classe Display, que apresenta um método sobrecarregado. O método show será chamado dependendo dos argumentos passados ​​para ele.

Resultado:

Única mensagem: Bem-vindo

Uma mensagem com Id: 10 Mensagem: Bem-vindo

A sobrecarga do operador pode ser alcançada em quase todos os tipos de dados internos disponíveis no C ++. Não existem tipos diferentes de sobrecarga do operador, mas as abordagens podem ser diferentes, usadas para atingir a sobrecarga do operador. Operadores como Unário, Binário, Relacional, Atribuição etc. podem ser sobrecarregados em C ++.

Vamos ver o exemplo simples de sobrecarga do operador ++. Neste exemplo, em vez do tipo de dados primitivo, usaremos o operador ++ no objeto de classe definido pelo usuário.

#include
using namespace std;
class Bike (
private:
int height;
public:
Bike (): height (80) () //constructor which initializes the height variable
void operator ++() (
height = height + 5;
)
void Specs () (
cout << "The height of the bike is: " < )
);
int main(void)
(
Bike bike;
bike.Specs();
++bike; //calling overloaded operator
bike.Specs();
return 0;
)
#include
using namespace std;
class Bike (
private:
int height;
public:
Bike (): height (80) () //constructor which initializes the height variable
void operator ++() (
height = height + 5;
)
void Specs () (
cout << "The height of the bike is: " < )
);
int main(void)
(
Bike bike;
bike.Specs();
++bike; //calling overloaded operator
bike.Specs();
return 0;
)

Portanto, temos um objeto cuja altura inicial será definida em 80 e aumentada em 5 quando chamamos operador ++ sobre ele.

Resultado:

A altura da bicicleta é: 80
A altura da bicicleta é: 85

Regras de sobrecarga em C ++

Abaixo estão as diferentes regras de sobrecarga de C ++ da seguinte maneira:

Regras para sobrecarga de função

  • Na sobrecarga de função, a função deve diferir em termos de tipo de dados, número ou sequência de parâmetros. Não pode diferir simplesmente com base no tipo de retorno da função.

Regras para sobrecarga do operador

  • Somente operadores integrados podem ser sobrecarregados, os novos operadores não podem ser sobrecarregados.
  • Existem quatro operadores que não podem ser sobrecarregados, são eles . (seleção de membro), :: (resolução do escopo), . * (seleção de membro usando o ponteiro para funcionar) e?: (operador ternário).
  • O operador sobrecarregado conterá pelo menos um operando do tipo de dados definido pelo usuário.
  • Existem certos operadores que não podem ser sobrecarregados usando a função friend, mas eles podem ser sobrecarregados como uma função membro.

Conclusão

Portanto, a sobrecarga no C ++ é o recurso exclusivo que oferece várias vantagens para nós. Existem principalmente dois tipos de sobrecarga, ou seja, sobrecarga de função e sobrecarga do operador. A sobrecarga de funções melhora a legibilidade do código, mantendo assim o mesmo nome para a mesma ação. A sobrecarga do operador permite redefinir a funcionalidade existente dos operadores, dando um significado especial a eles. Ambos são muito úteis na programação em C ++.

Artigos recomendados

Este é um guia para sobrecarregar em C ++. Aqui discutimos seu funcionamento, regras e dois tipos de sobrecarga em c ++, ou seja, sobrecarga de função e sobrecarga de operador. Você também pode consultar o seguinte artigo para saber mais -

  1. Sobrecarga em PHP
  2. Copiar Construtor em C ++
  3. Sobrecarga vs Substituição
  4. Alternar instrução em C ++
  5. Sobrecarga em Java
  6. Sobrecarga de Python