打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
C++ 学习之函数传参1:引用传参和非引用传参

C++ 学习之函数传参1:引用传参和非引用传参

分类: C++语言学习 272人阅读 评论(0) 收藏 举报

个人认为C++函数传参的一个指导性原则是:若函数的形参是非引用类型,传参时实际上是使用复制实参的值给形参,是实参值的副本,而非真正的实参;若函数的形参是引用类型的,则传递的其实就是实参本身,形参只不过是实参本身的别名而已。

 

1.非引用类型的形参(牢记关键词——复制实参的副本)

永远不要忘记传递进来的是实参的副本,与实参本身并无“太多直接”关系。

在使用非引用类型形参的时候,如果不需要对实参本身做修改,则直接传递即可。此时const形参,非const形参的值初始化问题五特殊要求,它们只是想用实参的副本值来初始化自己,并无特殊要求。

如果需要对实参本身进行操作或者修改,应该使用指针进行传递。形参复制的是指针的地址,通过修改指针所指地址存储的值来改变实参。

复制实参的局限性:

1)当要传递的实参是很大的对象时,复制对象所有的元素的代价太大;

2)没有办法对要传递的对象进行复制时,如要传递的是数组,而数组不能直接进行复制。

 

2.引用类型的形参(牢记关键词——实参的别名)

使用引用类型的形参要牢记,此时传递的参数与实参有着直接的关系。

如果使用引用类型的实参的唯一目的是为了避免大量的复制实参,而不对实参做修改,最好使用的形参类型为const 类型名&。

当子使用引用类型的形参时,要注意const在其中的影响。如果传递的实参本来是有const特性的,则不能使用非const类型的形参,这样有违const对象的使用规则。总结一下可以归纳为一下两点:

1)当函数的形参类型是const类型时,可以通过const类型的实参调用函数,也可以用非const类型的实参调用函数。

2)当函数的形参类型是非const类型时,只能用非const类型的实参调用函数。

综上两点可以看出,在不需要修改实参的情况下,函数的形参类型声明为const类型时,初始化的限制条件会相对放松些。所以有一种情况应当引起重视,就是应该吧不需要修改的应用形参定义为const引用。因为普通的非const应用会限制函数的应用,比如,这样的形参不能用const对象初始化,不能用字面值或产生右值的表达式初始化。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C 随笔(三)
嵌入式C Const关键字的基础知识
高质量C/C++编程(片段)
【C++专题】static_cast, dynamic_cast, const_cast探讨
C | 拷贝构造函数输入变为值传递会怎么样?
C++基础概念
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服