1.缺省参数
1.1缺省参数概念:
- 缺省参数是声明或定义函数时为函数的参数指定一个默认值 ;
- 在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。
- 所需代码:
#include <iostream>
using namespace std;
void show(int a = 1, int b = 2, int c = 3)
{
cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "c=" << c << endl;
}
int main()
{
show();
show(10, 20);
return 0;
}
1.2缺省参数的分类:
- 全缺省参数:函数的每个参数都有缺省值,传递参数的时候时,可传任意多个参数,且参数的传参是从左依次往右进行。
半缺省参数:函数的部分参数有缺省值,传参时,没有缺省值的必须传参且**缺省值要从右往左依次给**。
1.3注意:
-
因为实参是从右往左传所以半缺省参数可以省略左边,不能省略右边,不能间隔给
-
缺省参数不能在函数声明和定义中同时出现
-
缺省值必须是常量或者全局变量
-
C语言不支持缺省(因为C语言的编译器不支持)
2.函数重载
2.1函数重载概念
函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须不同。
概括来说就是两点:
下面的代码就不是函数重载
-那么为什么上面这个两个函数不能函数重载?为什么C++支持函数重载,而C语言不支持函数重载?
-
C语言没法支持重载是因为同名函数没办法区分,C语言在编译后,只对函数名前面加个_,所以没法区分同名函数
-
C++是通过函数修饰规则来区分函数,只要参数不同,修饰出来的名字就不一样,就支持重载
3.Windows下名字修饰规则
4.extern “C”
- 在函数前加extern “C”,意思是告诉编译器将该函数按照C语言的规则来编译