C++笔记——函数重载(function overload)
概念:
同一个代码中,可以出现n个相同名字的函数
- 作用:
同一个接口,具备不同的表现形式,实现了接口的统一 - 原理:
编译器在编译程序的时候,会自动把函数替换成对应版本重载形式 - 特点:
- 函数重载不关心返回值类型,返回值类型不同,其它的都一样(函数名字,参数个数类型),不叫函数重载
- 函数重载,函数名必须相同
- 函数重载,参数的个数或者类型至少要有一个是不同的
例子
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; //错误,类型和个数都不匹配
}
C++函数重载不关心返回值类型
#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; //错误,类型和个数都不匹配
}