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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值