对函数返回形式及传参方式的简单理解(实例)

 

函数可以返回值、引用和常量引用,其中返回常量引用与返回引用区别不大(惟一的区别就是前者返回结果是一个不能变化的对象引用)。

 

我们可以通过以下几个例子来理解返回值和返回引用的区别。

例1


输出结果 b: 1
函数返回一个值,该值会由形式参数复制到调用函数的环境中,因此改变a的值并不会影响b的值。

 

例2

输出结果 b: 2
函数返回引用,返回的结果是指向形式参数的引用,因此改变a的值会同时反映的b上。

 

 

上面两个例子改变一下传参的方式,会有不同的输出结果

例3

输出结果 b: 273185728
如前一篇的函数传参一文中所述,在调用Func函数前会调用A的构造函数将实际参数拷贝到形式参数,调用函数结束时,会调用A的析构函数释放形式参数。由于函数返回形式参数的引用,而形式参数又被释放掉了,因此这里的输出结果不是1。

 

例4

输出结果 b: 1
这里由于函数Func是返回值而不是引用,函数在返回时会把返回结果复制到调用函数的环境中,因此尽管形式参数会被释放掉,但对返回结果并没有影响,所以输出结果还是1。

 

初学C++,可能理解的不够到位,欢迎各位指正。有更好的例子也欢迎大家提出来讨论讨论,呵呵。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值