(一)函数默认参数
函数参数列表从右到左,依次可以赋予默认值,不能间断赋值
(1)正确用法
1 2 3 4 5 6 7 8 9 10 11 12
| #include <iostream> using namespace std;
int Fun(int a, int b = 3, int c = 2, int d = 1) { } int main() { Fun(1); return 0; }
|
(2)错误用法
间断赋值
1 2 3 4 5 6 7 8 9 10 11 12
| #include <iostream> using namespace std;
int Fun(int a = 3, int b, int c = 2, int d = 1) { } int main() { Fun(1); return 0; }
|
![在这里插入图片描述](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
(二)函数重载和函数默认参数的问题
举个栗子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include <iostream> using namespace std;
int Fun(int a, int b, int c, int d = 1) { } int Fun(int a, int b, int c) {
} int main() { Fun(1, 2, 3); return 0; }
|
![在这里插入图片描述](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![在这里插入图片描述](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
(三)拓展:函数名相同、参数类型相同、参数个数不同能否确定重载?
答:这个得看情况。
- 当函数中存在默认参数时,是否能重载就要看在调用时是否产生二义性,产生二义性就不能重载
- 函数中不存在默认参数,就可以发生重载。