(一)函数默认参数

函数参数列表从右到左,依次可以赋予默认值,不能间断赋值

(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;
}

在这里插入图片描述


(二)函数重载和函数默认参数的问题

举个栗子:

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;
}

在这里插入图片描述
在这里插入图片描述


(三)拓展:函数名相同、参数类型相同、参数个数不同能否确定重载?

答:这个得看情况。

  • 当函数中存在默认参数时,是否能重载就要看在调用时是否产生二义性,产生二义性就不能重载
  • 函数中不存在默认参数,就可以发生重载。