C++基础知识之"默认参数和占位参数"

fengjingtu

默认参数

C++中可以在函数声明时为参数提供一个默认值,

当函数调用时没有指定这个参数的值,编译器会自动用默认值代替。

规则

只有参数列表后面部分的参数才可以提供默认参数值

一旦在一个函数调用中开始使用默认参数值,那么这个参数后的所有参数都必须使用默认参数值

函数占位参数

占位参数只有参数类型声明,而没有参数名声明

一般情况下,在函数体内部无法使用占位参数

C++可以声明占位符参数,占位符参数一般用于程序扩展和对C代码的兼容

默认参数和占位参数可以结合。

练习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56

void default_para_demo1(int a = 10, int b = 10)
{
printf("a=%d,b=%d\n", a, b);
return;
}
void default_para_demo2(int a, int b = 10)
//默认参数后面不能有非默认参数
//void default_para_demo2(int a=10,int b)//error
{
printf("a=%d,b=%d\n", a, b);
return;
}
void default_para_demo3(int a, int b, int c = 10)
{
printf("a=%d,b=%d,c=%d\n", a, b, c);
return;
}

void placeholder_demo1(int a, int b, int)//为以后增加参数留下线索
{
printf("a=%d,b=%d\n", a, b);
return;
}
void placeholder_demo2(int a, int b, int = 0)//占位和默认结合
{
printf("a=%d,b=%d\n", a, b);
return;
}
int main_13()
{
int a = 4;
int b = 5;
int c = 6;
default_para_demo1();
default_para_demo1(a);
default_para_demo1(a, b);

//default_para_demo2();//error
default_para_demo2(a);
default_para_demo2(a, b);

//default_para_demo3();//error
//default_para_demo3(a);//error
default_para_demo3(a, b);
default_para_demo3(a, b, c);

//传入的实参个数,必须不小于没有默认值形参的个数
//placeholder_demo1(a,b);//即使是占位的,也要传参数
placeholder_demo1(a, b, c);

placeholder_demo2(a, b);//可以调用,因为有默认值
placeholder_demo2(a, b, c);

return 0;
}