C++ Primer 第六章 函数 6.5~6.6 练习和总结

6.5 特殊用途语言特性

6.5.1默认实参

我们可以给形参列表中的形参添加默认的实参。
如下形式

int func(int height,int width=123,char color='')

1。注意给一个形参赋予默认实参之后,其后面的所有形参都要赋予默认实参,所以在设计函数的时候,尽可能的需要手动传入参数的形参放在形参列表的前面。

2.默认实参不可以是局部变量,表达式只要能够转化为形参所定义的类型,都可以作为默认实参。

int w = 123;
int h = 123;
int func(int height=h,int width=1+5,char color=''){
   
}

以上赋予默认实参的方式都是可以的。如果变量是全局变量,可以调用函数之前修改变量的值,调用函数之后,默认实参的取值为全局变量最后一次修改的值。(大白话就是,如果默认实参是一个全局变量,那么全局变量变化,默认实参也会变化,因为形参的赋值,只发生在调用的时候,所以在这之前全局变量可以一直变化。)

3.C++中建议在头文件中写函数的声明,在源文件中写函数的定义。我们可以在声明的时候为函数赋予默认的实参,需要注意的是,如果同一个函数声明了多次,那么后续只能给没有赋予默认实参的形参赋予默认实参

int func(int a,int b ,int c=1);
int func(int a,int b,int c =1);//错误c修改了默认实参
int func(int a,int b=1,int c=1)// 错误,c修改了默认实参

从上的代码可以看到,就算是一模一样的代码同时声明两次,也算修改了之前已经赋予默认实参的形参。

练习
6.40

b。因为有默认实参的形参后面所有的形参都要有默认形参

6.41

a。是非法的,因为ht没有默认实参,所以调用函数需要一个实参
b。合法
c。合法,但是和初衷不符,因为调用函数时,实参是从左往右给形参赋值,所以init(14,’*’)是分别给ht,和wd赋值。

6.42
string make_plural(size_t ctr,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值