缺省参数的分类:全缺省,半缺省
缺省参数是声明或定义函数时为函数的参数指定一个缺省值
在调用该函数时,若没有指定实参则采用该形参的缺省值
否则使用指定的实参
void Func(int a = 0)
{
cout<
void Func(int a = 10, int b = 20, int c = 30)
{
cout<<"a = "<
这里面我们要注意我们传参时是从左到右挨着给的值,
Fun(15,25);这样传参的话我们c的默认值就是30
注意:传参不能写成这样的形式
Func(,25,);
Func(,,35);
Func(,25,35);
Func(15,,35);
void Func(int a, int b = 10, int c = 20)
{
cout<<"a = "<
只要有参数没有给缺省值那么它就是半缺省的
注意:
半缺省参数必须
从右往左
依次来给出,不能间隔着给缺省参数不能在函数声明和定义中同时出现
缺省值必须是
常量
或者全局变量
函数重载是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同,常用来处理实现功能类似数据类型不同的问题。
// 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;
}
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;
}
在C/C++中,一个程序要运行起来,需要经历以下几个阶段:预处理、编译、汇编、链接
链接过程:.o的目标文件会合并到一起其次还需找一些只给了声明的函数的函数地址
而每一个.o文件都有一个符号表符号表中存放函数的地址
当main文件要调用这个函数时会去符号表中找函数的地址
而符号表中两个func函数的地址
编译器不知道应该调用哪个
所以c程序不支持函数重载