Sobrecarga de função C++
Sobrecarga de função C++
Neste tutorial, aprenderemos sobre a sobrecarga de funções em C++ com exemplos.
Em C++, duas funções podem ter o mesmo nome se o número e/ou tipo de argumentos passados forem diferentes.
Essas funções com o mesmo nome, mas argumentos diferentes, são conhecidas como funções sobrecarregadas. Por exemplo:
// same name different arguments
int test() { }
int test(int a) { }
float test(double a) { }
int test(int a, double b) { }
Aqui, todas as 4 funções são funções sobrecarregadas.
Observe que os tipos de retorno de todas essas 4 funções não são os mesmos. Funções sobrecarregadas podem ou não ter diferentes tipos de retorno, mas devem ter argumentos diferentes. Por exemplo,
// Error code
int test(int a) { }
double test(int b){ }
Aqui, ambas as funções têm o mesmo nome, o mesmo tipo e o mesmo número de argumentos. Portanto, o compilador lançará um erro.
Exemplo 1:sobrecarga usando diferentes tipos de parâmetro
// Program to compute absolute value
// Works for both int and float
#include <iostream>
using namespace std;
// function with float type parameter
float absolute(float var){
if (var < 0.0)
var = -var;
return var;
}
// function with int type parameter
int absolute(int var) {
if (var < 0)
var = -var;
return var;
}
int main() {
// call function with int type parameter
cout << "Absolute value of -5 = " << absolute(-5) << endl;
// call function with float type parameter
cout << "Absolute value of 5.5 = " << absolute(5.5f) << endl;
return 0;
}
Saída
Absolute value of -5 = 5 Absolute value of 5.5 = 5.5
Neste programa, sobrecarregamos o
absolute()
função. Com base no tipo de parâmetro passado durante a chamada da função, a função correspondente é chamada. Exemplo 2:sobrecarga usando um número diferente de parâmetros
#include <iostream>
using namespace std;
// function with 2 parameters
void display(int var1, double var2) {
cout << "Integer number: " << var1;
cout << " and double number: " << var2 << endl;
}
// function with double type single parameter
void display(double var) {
cout << "Double number: " << var << endl;
}
// function with int type single parameter
void display(int var) {
cout << "Integer number: " << var << endl;
}
int main() {
int a = 5;
double b = 5.5;
// call function with int type parameter
display(a);
// call function with double type parameter
display(b);
// call function with 2 parameters
display(a, b);
return 0;
}
Saída
Integer number: 5 Float number: 5.5 Integer number: 5 and double number: 5.5
Aqui, o
display()
A função é chamada três vezes com argumentos diferentes. Dependendo do número e tipo de argumentos passados, o display()
correspondente função é chamada. O tipo de retorno de todas essas funções é o mesmo, mas esse não precisa ser o caso de sobrecarga de função.
Observação: Em C++, muitas funções de biblioteca padrão estão sobrecarregadas. Por exemplo, o
sqrt()
função pode levar double
, float
, int,
etc. como parâmetros. Isso é possível porque o sqrt()
função está sobrecarregada em C++. Linguagem C