【c++】函数重载
函数重载
C++⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同(可以是参数个数不同或者类型不同),这样C++函数调⽤就表现出了多态⾏为,使⽤更灵活。C语⾔是不⽀持同⼀作⽤域中出现同名函数的。
#include<iostream>
using namespace std;
// 1、参数类型不同
int Add(int left, int right)
{ cout << "int Add(int left, int right)" << endl; return left + right;
}
double Add(double left, double right)
{ cout << "double Add(double left, double right)" << endl; return left + right;
}
// 2、参数个数不同
void f()
{ cout << "f()" << endl;
}
void f(int a)
{ cout << "f(int a)" << endl;
}
// 3、参数类型顺序不同
void f(int a, char b)
{ cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{ cout << "f(char b, int a)" << endl;
}
// 下⾯两个函数(无参函数和全缺省函数)构成重载
// f1()调⽤时会报错,存在歧义,编译器不知道调⽤谁
void f1()
{ cout << "f()" << endl;
}
void f1(int a = 10)
{ cout << "f(int a)" << endl;
}
int main()
{ Add(10, 20); Add(10.1, 20.2);//会自动识别然后传到对应的函数里 f();//不传参调用时,存在调用歧义 f(10); f(10, 'a'); f('a', 10); return 0;
}
注意:
// 返回值不同不能作为重载条件,因为调⽤时也⽆法区分
//void fxx()
//{}
//
//int fxx()
//{
// return 0;
//}