English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Duas ou mais funções com o mesmo nome e diferentes parâmetros são chamadas de funções sobrecarregadas. Neste artigo, você aprenderá sobre sobrecarga de funções através de exemplos.
funçãoé um trecho de código que agrupa código para executar uma tarefa específica.
Em C ++Na programação, se o número ou o tipo dos parâmetros passados for diferente, duas funções podem ter o mesmo nome.
As funções que possuem diferentes números ou tipos de parâmetros (ou ambos) são chamadas de funções sobrecarregadas. Por exemplo:
int test() {} int test(int a) {} float test(double a) {} int test(int a, double b) {}
Aqui, todas4esses tipos de função são funções de sobrecarga, porque os parâmetros passados para essas funções são diferentes.
Observe que4esses tipos de função não têm tipos de retorno diferentes. As funções de sobrecarga podem ou não ter tipos de retorno diferentes, mas devem ter parâmetros diferentes.
// código de erro int test(int a) {} double test(int b){}
mesmo que os tipos de retorno sejam diferentes, mas os números e tipos de parâmetros passados para essas duas funções são os mesmos. Portanto, o compilador lançará um erro.
#include <iostream> using namespace std; void display(int); void display(float); void display(int, float); int main() { int a = 5; float b = 5.5; display(a); display(b); display(a, b); return 0; } void display(int var) { cout << "número inteiro: " << var << endl; } void display(float var) { cout << "número de ponto flutuante: " << var << endl; } void display(int var1, float var2) { cout << "número inteiro: " << var1; cout << " e números de ponto flutuante: " << var2; }
resultados de saída
número inteiro: 5 número de ponto flutuante: 5.5 número inteiro: 5 e números de ponto flutuante:5.5
Aqui, a função display() é chamada três vezes com diferentes tipos ou números de parâmetros.
todos esses tipos de função retornam o mesmo tipo, mas isso não é necessário.
//o programa calcula o valor absoluto //é válido para números inteiros e de ponto flutuante #include <iostream> using namespace std; int absolute(int); float absolute(float); int main() { int a = -5; float b = 5.5; cout << "número " << a << " valor absoluto= " << absolute(a) << endl; cout << "número " << b << " valor absoluto= " << absolute(b); return 0; } int absolute(int var) { if (var < 0) var = -var; return var; } float absolute(float var) { if (var < 0.0) var = -var; return var; }
resultados de saída
número -5 valor absoluto= 5 número 5.5 valor absoluto= 5.5
Neste exemplo, duas funções absolute() são sobrecarregadas.
Ambas as funções aceitam um único parâmetro. No entanto, uma função aceita inteiro como parâmetro, enquanto a outra aceita float.
Quando a função absolute() é chamada com int como parâmetro, será chamada esta função:
int absolute(int var) { if (var < 0) var = -var; return var; }
Quando a função absolute() é chamada com float como parâmetro, será chamada esta função:
float absolute(float var) { if (var < 0.0) var = -var; return var; }