Sobrecarga de função em C ++: tudo o que você precisa saber



Este artigo fornecerá um conhecimento detalhado e abrangente da sobrecarga de função em C ++ com muitos exemplos para entender.

C ++ é uma daquelas linguagens de programação que é muito flexível e também cobre vários recursos da programação orientada a objetos. A sobrecarga é outra característica desta linguagem de programação.As dicas a seguir serão abordadas neste artigo 'Sobrecarga de função em C ++'

Sobrecarga C ++

Quando criamos dois ou mais membros de uma classe com o mesmo nome, mas diferentes em número ou tipo de parâmetros, isso é conhecido como sobrecarga de C ++. Em C ++, podemos sobrecarregar:





  • métodos,
  • construtores, e
  • propriedades indexadas

Tipos de sobrecarga em C ++

types-of-overloading-in-c++

O que é sobrecarga de função em C ++?

A sobrecarga de função em C ++ pode ser definida como o processo de ter duas ou mais funções de membro de uma classe com o mesmo nome, mas diferentes em parâmetros. Na sobrecarga de função, a função pode ser redefinida usando diferentes tipos de argumentos ou um número diferente de argumentos de acordo com o requisito. É apenas por meio dessas diferenças que o compilador pode diferenciar entre as duas funções sobrecarregadas.



Uma das principais vantagens da sobrecarga de função é que ela aumenta a legibilidade do programa, pois não precisamos usar nomes diferentes para a mesma ação repetidamente.

Alterando o número de argumentos

Nessa forma de sobrecarga de função, definimos duas funções com os mesmos nomes, mas um número diferente de parâmetros do mesmo tipo. Por exemplo, no programa mencionado abaixo, criamos duas funções add () para retornar a soma de dois e três inteiros.

// definição da primeira função int add (int a, int b) {cout<< a+b } // second overloaded function definition int add(int a, int b, int c) { cout << a+b+c }

Aqui, a função add () é considerada sobrecarregada, pois tem duas definições, uma que aceita dois argumentos e outra que aceita três argumentos. A função add () que será chamada depende do número de argumentos.



int main () {add (10, 20) // add () com 2 parâmetros será chamado add (10, 20, 30) // sum () com 3 parâmetros será chamado}
#include usando namespace std int add (int a, int b) {cout<< a+b <

No exemplo acima, sobrecarregamos a função add () alterando seu número de argumentos. Primeiro, definimos uma função add () com dois parâmetros, depois a sobrecarregamos definindo novamente a função add (), mas desta vez com três parâmetros.

Por ter diferentes tipos de argumentos

Neste método, definimos duas ou mais funções com o mesmo nome e o mesmo número de parâmetros, mas os tipos de dados usados ​​para esses parâmetros são diferentes. Por exemplo, neste programa, temos três funções add (), o primeiro obtém dois argumentos inteiros, o segundo obtém dois argumentos float e o terceiro obtém dois argumentos duplos.

reverso de um número em java
#include usando namespace std int add (int x, int y) // primeira definição {cout<< x+y << endl return 0 } float add(float a, float b) { cout << a+b << endl return 0 } double add(double x, double y) { cout << x+y << endl return 0 } int main() { add(20, 40) add(23.45f, 34.5f) add(40.24, 20.433) }

No exemplo acima, definimos a função add () três vezes. Primeiro usando inteiros como parâmetros, segundo usando float como parâmetros e terceiro usando double como parâmetro.
Portanto, substituímos a função add () duas vezes.

Vantagens da sobrecarga de função em C ++

  • Usamos sobrecarga de função para economizar espaço de memória, consistência e legibilidade de nosso programa.

  • Com o conceito de sobrecarga de função de uso, podemos desenvolver mais de uma função com o mesmo nome

  • A sobrecarga de função mostra o comportamento do polimorfismo que nos permite obter um comportamento diferente, embora haja algum link usando o mesmo nome da função.

  • A sobrecarga de funções acelera a execução do programa.

  • A sobrecarga de funções é usada para reutilização de código e também para economizar memória.

  • Ajuda o aplicativo a carregar o método de classe com base no tipo de parâmetro.

  • A manutenção do código é fácil.

Desvantagens da sobrecarga de função em C ++

  • As declarações de função que diferem apenas por seu tipo de retorno não podem ser sobrecarregadas com o processo de sobrecarga de função.
  • As declarações de função de membro com os mesmos parâmetros ou os mesmos tipos de nome não podem ser sobrecarregadas se qualquer uma delas for declarada como uma função de membro estática.
  • classe XYZ {função void estática () função void () // erro}

Sobrecarga de função e ambigüidade

Quando o compilador não consegue decidir qual função deve invocar primeiro entre as funções sobrecarregadas, essa situação é conhecida como ambigüidade de sobrecarga de função. O compilador não executa o programa se ele mostra um erro de ambigüidade. Causas da ambiguidade de sobrecarga de função:

diferença entre lançar e lançar java
  • Conversão de tipo.
  • Função com argumentos padrão.
  • Função com passagem por referência

Conversão de tipo:

#incluir usando o namespace std void function (float) void function (int) void function (float x) {std :: cout<< 'Value of x is : ' <

O exemplo acima gera um erro - “a chamada de 'função (dupla)' sobrecarregada é ambígua”. A função (3.4) irá chamar a primeira função. A função (34) chama a segunda função de acordo com nossa previsão. Mas não é isso que acontece porque em C ++ todas as constantes de ponto flutuante são tratadas como double e não como float. Se substituirmos a variável float por uma variável dupla, o programa funcionará bem. Portanto, chamamos isso de erro de conversão de tipo de float para double.

Função com argumentos padrão:

#incluir usando o namespace std void function (int) void function (int, int) void function (int x) {std :: cout<< 'Value of x is : ' <

O exemplo acima dá um erro dizendo 'a chamada de 'fun (int)' sobrecarregada é ambígua', isso porque a função (int y, int z = 12) pode ser chamada de duas maneiras:

  1. Chamando a função com um argumento (e ela assumirá automaticamente o valor de z = 12)
  2. Chamando a função com dois argumentos.

Quando chamamos a função: function (12), preenchemos a condição da função (int) e da função (int, int), portanto, o compilador fica em uma ambigüidade mostra um erro.

Função com passagem por referência

o que é jit em java
#incluir usando o namespace std void function (int) void function (int &) void function (int a) {std :: cout<< 'Value of a is : ' < 

O programa acima dá um erro dizendo “a chamada de 'diversão (int &)' sobrecarregada é ambígua”. Como vemos, a primeira função leva um argumento inteiro e a segunda função leva um parâmetro de referência como argumento. Nesse caso, o compilador não é capaz de entender qual função é necessária para o usuário, pois não há diferença sintática entre fun (int) e fun (int &), portanto, ele dispara um erro de ambigüidade.

Com isso, chegamos ao fim dessa Sobrecarga de Funções em C ++. Se você deseja saber mais, confira o pela Edureka, uma empresa de aprendizagem online confiável. O curso de certificação e treinamento Java J2EE e SOA da Edureka foi projetado para treiná-lo tanto para os conceitos básicos e avançados do Java, juntamente com várias estruturas Java como Hibernate e Spring

Tem alguma questão para nós? Mencione isso na seção de comentários deste blog e entraremos em contato com você o mais breve possível.