C++的编译器是根据函数的实参来确定应该调用哪一个函数的。
举个例子
#include<iostream>
using namespace std;
double sin(double x,double y)
{
return x*y;
}
double sin(double a,int b)
{
return a+b;
}
int main(void)
{
double x;
cin>>x;
//cout<<sin(x)<<endl;;
cout<<sin(x,x)<<endl;
cout<<sin(x,10)<<endl;
return 0;
}
sin(x)
没有找到对应的函数,所以编译会报错,因为x是double
类型,所以sin(x,x)
对应的是double sin(double x1,double x2)
,(x,10)
对应的是sin(double x,int a)
运行结果如下
5
25
15
注意:
仅函数的类型不同,说白了是返回值类型不同,不能定义为重载函数!
不同参数个数的话……
int add(int a,int b,int c)
{
return a+b+c;
}
int add(int a,int b)
{
return a+b;
}
int main(void)
{ cout<<"5+10="<<add(5,10)<<endl;
cout<<"5+10+20="<<add(5,10,20)<<endl;
return 0;
}
运行结果如下
5+10=15
5+10+20=35