c++学习笔记(十)

返回应用类型

返回引用

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已经是一个常量的,所以会报错。

猜你喜欢

转载自www.cnblogs.com/147258369k/p/12285620.html