Sobrecarga de função em C++
Na escrita de código real, às vezes a mesma função funcional pode processar diferentes tipos de objetos, então a função precisa ser reimplementada, o que tornará o código mais complicado. Para resolver esse problema, o C++ suporta sobrecarga de função. .
Por exemplo, para um problema de soma aritmética, você precisa personalizar uma função para receber os dados recebidos e resumi-los. Mas como um módulo independente, como saber que tipo de dados o chamador passou? Podem ser dados inteiros, é claro que podem ser dados do tipo ponto flutuante, ou podem ser um número inteiro e um tipo de ponto flutuante (ainda não se sabe qual é o tipo inteiro e qual é o tipo de ponto flutuante), e uma abordagem abrangente é usar vários Cada tipo de função de parâmetro formal deve ter uma função definida, ou seja, dois tipos int, dois tipos duplos, o primeiro int e o segundo duplo, e o primeiro duplo e o segundo int Definir quatro funções. para Implementação, por exemplo, os nomes são: Add_double_double(), Add_int_double(), Add_int_int(), Add_double_int(), etc.
Então, o surgimento da sobrecarga de funções em C++ resolve esse problema muito bem. A sobrecarga de funções consiste em duas ou mais funções com o mesmo nome de função, mas diferentes tipos de parâmetros ou números. Com base no tipo e número de parâmetros, a função mais adequada é selecionada automaticamente. para chamadas vinculativas, e a seleção é implementada automaticamente.
Por exemplo, no exemplo de adição agora:
#include<iostream>usingnamespacestd;intadd(inta,intb){cout<<(int,int)t;returna+b;}doubleadd(doublea,doubleb){cout<<(doble,double)t;returna+ b ;}doubleadd(doublea,intb){cout<<(double,int)t;returna+b;}doubleadd(inta,doubleb){cout<<(int,double)t;returna+b;}intmain ( ){cout<<add(2,3)<<endl;cout<<add(2.9,15.3)<<endl;cout<<add(10,9.9)<<endl;cout<<add(11.5,5 ) <<endl;return0;}
Os resultados da execução são os seguintes:
Por favor, leia o código com atenção. Para confirmar qual função é executada, adicionamos uma instrução de saída cout dentro da função para distinguir qual função é chamada.
Todos devem experimentar por conta própria para entender o código!