文章目录
前言
重载函数:可以共用一个函数名,提高利用率
实现函数重载的条件:
作用域相同
函数名称相同
函数的参数类型,数量,顺序不同
!!!!函数的返回值不可以做函数重载的条件
函数的定义:
函数将有效的输入值变换为唯一的输出值,同一输入总是对应同一输出。
如果返回值的类型 能用来 重载,那么对于相同的输入值,程序怎么决定到底应该调用哪一个重载的方法? 况且即使有方法判定执行哪一个重载方法,那么必然 相同的输入值 可能 有 不同的 输出值, 这违反了 数学概念中 对 函数的定义 。
1.基本语法
代码如下(示例):
#include<bits/stdc++.h>
using namespace std;
void fun()
{
cout<<"fun()的调用"<<endl;
}
void fun(int a)
{
cout<<"fun(int a)的调用"<<endl;
}
void fun(double a)
{
cout<<"fun(double a)的调用"<<endl;
}
void fun(int a,int b)
{
cout<<"fun(int a,int b)的调用"<<endl;
}
void fun(int a,double b)
{
cout<<"fun(int a,double b)的调用"<<endl;
}
void fun(double a,int b)
{
cout<<"fun(double a,int b)的调用"<<endl;
}
int main()
{
fun(10,3.14);//数据和那个重载函数的定义参数的类型一样,就会调用哪个
return 0;
}
2.注意事项
引用作为重载条件
重载函数碰到默认参数(默认参数 :在函数定义时给参数赋值eg:void fun(int a=10))
代码如下(示例):
#include<bits/stdc++.h>
using namespace std;
//引用作为重载条件
void fun(int &a)
{
cout<<"fun(int &a)的调用"<<endl;
}
void fun(const int &a)//const表示只能读不能修改
{
cout<<"fun(coust int &a)的调用"<<endl;
}
//碰到默认参数
void fun1(int a,int b=10)
{
cout<<"fun(int a,int b=10)的调用"<<endl;
}
void fun1(int a)
{
cout<<"fun(int a)的调用"<<endl;
}
int main()
{ int a=10;
fun(a);//数据和那个重载函数的定义参数的类型一样,就会调用哪个
//fun1(10); //出现二义性,两个都符合条件,不知道怎么选择
return 0;
}