作用:函数名可以相同,提高复用性
函数重载满足条件
//函数重载的满足条件
//1、同一个作用域下
//2、函数名称相同
//3、函数参数类型不同,或者个数不同,或者顺序不同
//注意
//函数的返回值不可以作为函数重载的条件
#include <iostream>
using namespace std;
//函数重载的满足条件
//1、同一个作用域下
//2、函数名称相同
//3、函数参数类型不同,或者个数不同,或者顺序不同
void func()
{
cout << "func的调用!" << endl;
}
void func(int a) {
cout << "func (int a)的调用!" << endl;
}
void func(double a) {
cout << "func (double a)的调用!" << endl;
}
void func(int a, double b) {
cout << "func (int a ,double b)的调用! " << endl;
}
void func(double a, int b) {
cout << "func ( double a ,int b)的调用!" << endl;
}
//注意
//函数的返回值不可以作为函数重载的条件
/*
int func(double a, int b) {
cout << "func ( double a ,int b)的调用!" << endl;
}
*/
void main()
{
func();
func(10);
func(2.3);
func(2,2.3);
func(2.3,2);
}
//注意
//函数的返回值不可以作为函数重载的条件
注意事项
1.引用作为重载条件
2.函数重载碰到默认参数
//1.引用作为重载条件
void fun(int &a) {
cout << "fun (int &a)的调用!" << endl;
}
void fun(const int &a) {
cout << "fun (const int &a)的调用!" << endl;
}
void main()
{
int a = 10;
fun(a);//int &a=10;不合法
}
//输出fun(int &a)
void main()
{
fun(10);//int &a=10;不合法
}
//输出fun(const int &a)
// fun(10);//fun(int &a) int &a=10;不合法,报错
// fun(10);// fun(const int &a) const int &a=10;合法
2.函数重载碰到默认参数
//2.函数重载碰到默认参数
void fun2(int a,int b) {
cout << "fun (int a,int b)的调用!" << endl;
}
void fun2(int a) {
cout << "fun (int a)的调用!" << endl;
}
void main()
{
fun2(10);
}
注释掉fun2,可运行
传两个参数,明确,不歧义
//2.函数重载碰到默认参数
void fun2(int a,int b=1) {//此时相当于只有int a 一个变量
cout << "fun (int a,int b)的调用!" << endl;
}
void fun2(int a) {
cout << "fun (int a)的调用!" << endl;
}
void main()
{
fun2(10,20);
}
参考:
哔哩哔哩 黑马程序员