C++ possui a suporte a sobrecarga de função. Com esse suporte, declaramos funções
homônimas com quantidade de parâmetros e tipos de dados de retorno declarados com tipagem
diferente.
Sintaxe
tipo_retorno nome_funcao(<parametros>); //protótipo
No exemplo abaixo, uma função tem seu único parâmetro, declarado como tipo int,
sobrecarregado com o tipo bool. O argumento passado para função faz a distinção de qual
sobrecarga será usada.
Exemplo 9
#include <iostream>
void funcao(int a)
{
cout << hex << a << endl;
}
void funcao(bool a)
{
cout << boolalpha << a << endl;
}
int main()
{
funcao(100);
funcao(true);
}
Saída
64
true
No exemplo logo abaixo, uma função, que retorna o resultado de uma adição entre dois parâmetros,
tem seus parâmetros int sobrecarregados com os tipos float e string. Os
argumentos passado para função irão distinguir qual sobrecarga será usada.
Exemplo 10
#include <iostream>
using namespace std;
int funcao(int a, int b)
{
return a + b;
}
float funcao(float a, float b)
{
return a + b;
}
string funcao(string a, string b)
{
return a + b;
}
int main()
{
cout << funcao(1,1) << endl;
cout << funcao(1.1f,1.1f) << endl;
cout << funcao("string ","concatenada") << endl;
}
Saída
d2
2.2
string concatenada
C++ também permite que a sobrecarga seja feita com diferentes quantidades de parâmetros. No
exemplo abaixo sobrecarregamos a mesma função de adição adicionando mais uma parâmetro na
sobrecarga para valores float.
Exemplo 11
#include <iostream>
using namespace std;
using namespace std;
int funcao(int a, int b)
{
return a + b;
}
float funcao(float a, float b, float c)
{
return a + b + c;
}
int main()
{
cout << funcao(1,1) << endl;
cout << funcao(1.1f,1.1f, 1.1f) << endl;
}
Saída
2
3.3