Sobrecarga de função C ++ (com exemplos)

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 ​​for diferente.

Essas funções com o mesmo nome, mas com 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. As funções sobrecarregadas podem ou não ter tipos de retorno diferentes, mas devem ter argumentos diferentes. Por exemplo,

 // Error code int test(int a) ( ) double test(int b)( )

Aqui, as duas funções têm o mesmo nome, o mesmo tipo e o mesmo número de argumentos. Portanto, o compilador gerará um erro.

Sobrecarga de função usando diferentes tipos de parâmetros

 // Program to compute absolute value // Works for both int and float #include 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; )

Resultado

 Valor absoluto de -5 = 5 Valor absoluto de 5,5 = 5,5
Trabalho de sobrecarga para a função absolute ()

Neste programa, sobrecarregamos a absolute()função. Com base no tipo de parâmetro passado durante a chamada da função, a função correspondente é chamada.

Sobrecarga de função usando número diferente de parâmetros

 #include 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; )

Resultado

 Número inteiro: 5 Número flutuante: 5,5 Número inteiro: 5 e número duplo: 5,5

Aqui, a display()função é chamada três vezes com argumentos diferentes. Dependendo do número e tipo de argumentos transmitidos, a display()função correspondente é chamada.

Trabalho de sobrecarga para a função display ()

O tipo de retorno de todas essas funções é o mesmo, mas não precisa ser o caso para sobrecarga de função.

Nota: Em C ++, muitas funções de biblioteca padrão estão sobrecarregadas. Por exemplo, a sqrt()função pode demorar double, float, int,etc. como parâmetros. Isso é possível porque a sqrt()função está sobrecarregada em C ++.

Artigos interessantes...