首页 > 编程语言 > 详细

c++学习笔记(十)

时间:2020-02-09 00:49:17      阅读:76      评论:0      收藏:0      [点我收藏+]

返回应用类型

返回引用

1.不要返回局部变量的引用

为了验证为什么不能返回局部变量的引用,我按照所学的例题自己做了一点小测试。

#include<iostream>
using namespace std;
int& sum()
{
    int num=10;
    int& rnum=num;
    return rnum;
}
int main()
{
    int n;
    n=sum();
    cout<< n << endl;
    return 0;
}

技术分享图片
结果是10,并没有问题。

然后我又按照视频所教的,用测试函数测试一下。
技术分享图片
结果
技术分享图片
还是没变,有点小失望。

这是视频,视频中老师所写的测试函数使result改变了值。
技术分享图片
虽然我自己做得测试失败了,但根据视频还是弄懂了意思。

不能返回局部变量的引用是因为局部变量会被内存回收。

所谓内存回收,并不是把内存保存的设置清零,而是指内存中你的程序所申请的这块内存已经不再是你的了,被其他程序占用,所以值会改变。

而你传递出去的是一个地址,地址不管里面的值是否改变,都会将值给出去,所以就有可能出错。

2.函数可以不返回值,默认返回传入的引用对象本身

技术分享图片
这是老师所写的代码。

但很遗憾,我用的devc++会报错,与老师讲的不一样。。。

但如果要返回的话必须返回含参的引用,要么返回num1,要么返回num2,返回num1+num2都是错的。

因为num1+num2已经是一个常量的,所以会报错。

c++学习笔记(十)

原文:https://www.cnblogs.com/147258369k/p/12285620.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!