C++学习笔记14——默认实参

来源:互联网 发布:和谐万维软件 编辑:程序博客网 时间:2024/06/05 06:31
1,定义方式
void show_info1(unsigned int age, double height = 1.73, double length = 16);void show_info2(unsigned int age, double height, double length);
图中,show_info1()中的参数列表中后两个参数提供了默认实参,当调用show_info1()而不对这两个形参提供实参时,则使用默认实参。
show_info2()则为无默认实参的版本。

2,默认实参在参数列表中的位置
默认实参只能用来替换函数调用缺少的尾部实参。
这要求两点:
(1)在声明带有默认实参的函数时,一定要将带有默认实参的形参安排在参数列表的尾部;
(2)在调用带有默认实参的函数时,一旦从某个位置开始使用了默认实参,则之后的每个形参都不要再传递实参,而使用默认实参,否则报错。
比如上面定义的show_info1(),如果在调用时使用
show_info(27,,18);
这样的表达式,希望age和length使用我们传递的实参,而height使用默认实参,则肯定会报错:
error C2059: 语法错误 : “,”

正确的调用格式是:
show_info(27);show_info(27,1.80);show_info(27,1.80,18);

3,声明与定义
在声明或者定义中指定默认实参皆可,但要么在声明中指定,要么在定义中指定,而不能两者都指定,否则报错:
error C2572: “show_info2”: 重定义默认参数 

由于我们通常是将函数声明放在头文件中,所以应当在头文件中指定默认实参,这样在每个包含了该头文件的文件中调用该函数都能使用默认实参;
但是,如果是在函数定义中指定默认实参,由于定义放在.cpp文件中,而.cpp文件是不会被包含的,所以只在当前文件中调用该函数时可用默认实参,而在其他包含头文件的文件中调用该函数都不能使用默认实参;
对于声明与定义都放在同一个.cpp文件中的情况,同样只能在一个地方指定默认实参。由于该函数只能在本文件中使用,所以当时也只能在本文件中使用默认实参。
0 0
原创粉丝点击