C++ primer 传递参数( const 实参 形参 引用)

一、.非引用形参: 通过复制对应的实参实现初始化。当用实参副本初始化形参时,函数并没有访问调用所传递的实参本身,因此不会修改实参的值。
1.指针形参:此时复制实参指针。与其他非引用类型的形参一样,该类形参的任何改变也仅作用于局部副本。如果函数将新指针赋给形参,主调函数使用的实参指针的值没有改变。如果函数的形参是非const类型的指针,则函数可通过指针实现赋值,修改指针所指向对象的值。
2.const形参
在C语言中,具有const形参或非const形参的函数并无区别,C++为了对C兼用,也保留了这一作法。
3.复制实参的局限性(不适宜情况)
1)当需要在函数中修改实参的值
2)当需要以大型对象作为实参传递时。对实际的应用而言,复制所付出的时间在位空间代价太大;
3)当没有办法实现对象复制
对于上述几情况,有效解决方法是将形参定义为引用或指针类型。
二、引用形参
1定义引用时,必须用与该引用绑定的对象初始化该引用。引用形参完全以相同的方式工作。每次调用函数,引用形参被创建并与相应实参关联,而并非这些对象的副本。
2.使用引用形参返回额外的信息
函数只能返回单个值,但有些时候,函数有不止一个的内容需要返回,可用引用形参的方式。
3.利用const引用避免复制
如果使用引用形参的唯一目的是避免复制实参,则应将形参定义为const引用。普通的非const引用形参在使用时不太灵活。这样的形参既不能用const对象初始化,也不能用字面值或产生右值的表达式实参初始化,只能与完全同类型的非const对象关联。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值