Sobrecarga de funciones de notas de C ++ (sobrecarga de funciones)
concepto:
Puede haber n funciones con el mismo nombre en el mismo código
- Función: La
misma interfaz tiene diferentes formas de expresión, realizando la unificación de la interfaz. - Principio:
Cuando el compilador compila el programa, automáticamente reemplazará la función con la versión correspondiente sobrecargada. - caracteristicas:
- La sobrecarga de funciones no se preocupa por el tipo de valor de retorno, el tipo de valor de retorno es diferente y todo lo demás es el mismo (nombre de función, tipo de número de parámetro), no se llama sobrecarga de función
- Sobrecarga de funciones, el nombre de la función debe ser el mismo
- Sobrecarga de funciones, al menos uno del número o tipo de parámetros debe ser diferente
ejemplo
int add(int a,int b)
double add(int a,int b) //不是重载,不关心返回值类型
void add(int a,int b); //不是重载,不关心返回值类型
int add(int c,int d) 不是重载
int myadd(int a,int b) //不是重载,名字不同
double add(double a,int b) //是重载
double add(int a,double b) //是重载
double add(double a,double b)
double add(double a,double b,double c); //是重载,个数不同
int add(int a,int b)
{
cout<<"第一个版本的add"<<endl;
return a+b;
}
double add(double a,double b)
{
cout<<"第二个版本的add"<<endl;
return a+b;
}
int main()
{
int a=78;
int b=74;
double c=45.6;
double d=52.3;
float e=85.6;
//编译器根据实参的类型和个数匹配对应版本的add
cout<<add(a,b)<<endl; //编译器把这个翻译成 add(int,int)
cout<<add(c,d)<<endl; //编译器把这个翻译成 add(double,double)
//cout<<add(a,e)<<endl; //错误,类型不匹配
//cout<<add(a,b,c)<<endl; //错误,类型和个数都不匹配
}
La sobrecarga de funciones de C ++ no se preocupa por el tipo de valor de retorno
#include <iostream>
using namespace std;
int add(int a,int b)
{
cout<<"第一个版本的add"<<endl;
return a+b;
}
double add(double a,double b)
{
cout<<"第二个版本的add"<<endl;
return a+b;
}
double add(int a,int b)
{
cout<<"第三个版本的add"<<endl;
return a+b;
}
int main()
{
int a=78;
int b=74;
double c=45.6;
double d=52.3;
float e=85.6;
//编译器根据实参的类型和个数匹配对应版本的add
cout<<add(a,b)<<endl; //编译器把这个翻译成 add(int,int)
cout<<add(c,d)<<endl; //编译器把这个翻译成 add(double,double)
//cout<<add(a,e)<<endl; //错误,类型不匹配
//cout<<add(a,b,c)<<endl; //错误,类型和个数都不匹配
}