一、函数重载概述
作用:函数名可以相同,提高复用性
二、函数重载满足条件
1.同一个作用域下
2.函数名称相同
3.函数参数类型不同、或者个数不同、或者顺序不同
注:函数的返回值不可以作为函数重载的条件
三、代码示例
参数个数不同
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
using namespace std;
void test()
{
cout << "test()调用" <<endl;
}
void test(int a)
{
cout << "test(int a)调用" <<endl;
}
int main()
{
test();
test(1);
return 0;
}
输出结果
参数类型不同
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
using namespace std;
void test(double a)
{
cout << "test(double a)调用" <<endl;
}
void test(int a)
{
cout << "test(int a)调用" <<endl;
}
int main()
{
test(1);
test(3.14);
return 0;
}
输出结果
3.参数顺序不同
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
using namespace std;
void test(double a,int b)
{
cout << "test(double a,int b)调用" <<endl;
}
void test(int a,double b)
{
cout << "test(int a,double b)调用" <<endl;
}
int main()
{
test(1,3.14);
test(3.14,1);
return 0;
}
输出结果
四、函数重载的注意事项
1、引用作为重载的条件
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
using namespace std;
void test(int &a) //int &a = 10;不合法
{
cout << "test(int &a)调用" <<endl;
}
void test(const int &a) //const int &a = 10; 合法
{
cout << "test(const int &a)调用" <<endl;
}
int main()
{
int a = 10;
test(a); //调用无const
test(10); //调用有const
return 0;
}
输出结果
2、函数重载碰到默认参数
#include <iostream>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
using namespace std;
void test(int a,int b = 10)
{
cout << "test(int a,int b=10)调用" <<endl;
}
void test(int a)
{
cout << "test(int a)调用" <<endl;
}
int main()
{
test(10);//传一个参数产生二义性
return 0;
}
报错