引用变量使用误区
来源:互联网 发布:mac版idown怎么用 编辑:程序博客网 时间:2024/05/29 02:32
前两天感觉对引用明白的差不多了,但是今天突然一想感觉又糊涂了,对于返回引用类型的函数的返回值到底可以返回什么类型,以及返回局部变量的引用后出现的问题,感觉很头痛,还好看到了下面的一个帖子,并亲自在vc上做了实验,终于把引用弄明白了。。。。。。。。。。。。。。。。。。。
不能返回局部变量的引用给一个引用变量。但是如果返回引用给一个相关的非引用变量的话是可以的。下面的例子可以说明这一点。
#include<iostream>
using namespace std;
int &ref()
{
int ivar=1100; //局部变量
int &irvar=ivar;
return irvar; // 返回了局部变量的引用
}
void test()
{
int a=b=c=d=e=f=g=h=0;
}
int main()
{
/*这里函数ref返回局部变量的引用,返回后立即把ivar的值重新赋给了变量i,在主函数中i//是有效的,所以能够得到正确的结果*/
int i=ref();
int &j=ref(); //而下面这句,函数ref返回一个引用给引用变量。所以j就是ivar的别名
test(); //此处调用函数test,则会覆盖已经被系统释放的ivar所占的内存空间。
// 如果注释掉这句会发现下面输出j仍然会得到正确的结果
cout<<i<<endl<<j<<endl;
}
我是在vc6.0中运行的 没注释掉test的时候 输出j得到的是一个很大的随机值 注释掉test后仍然能够得到1100;所以我觉得书上的那句话有必要改一改:可以返回局部变量的引用,但是千万不要反回局部变量的引用给一个引用变量。
- 引用变量使用误区
- 误区--变量的错误使用
- 使用引用成员变量
- C++引用变量的使用
- 引用变量.(变量)的使用
- Android static静态成员变量的使用误区
- Android static静态成员变量的使用误区
- C++ 静态static 变量在 cocos2d-x 里面使用误区
- Android static静态成员变量的使用误区
- Android static静态成员变量的使用误区
- chrome下使用的let,const变量的误区
- Android static静态成员变量的使用误区
- Android static静态成员变量的使用误区
- 值传递引用误区
- PHP引用以及误区
- C++ 类成员引用变量的使用
- 使用变量引用图片等资源
- C++ 类成员引用变量的使用
- 欧几里得距离 曼哈坦距离 明考斯基距离
- 什么时候应该将形参定义为引用类型。什么时候不应该将形参定义为引用。
- Linux静态库和动态库
- 关于几种给textArea赋值的问题
- scrollview 原理
- 引用变量使用误区
- 再说代码静态检查
- fedora 16 单用户登陆和root登陆
- 结构体的使用
- DB2的SQLCODE和SQLState相关解释
- delphi webbrowser 模拟表单提交
- javax.naming.InitialContext.lookup("java:comp/env/***")
- mysql int(3)与int(11)的区别
- IOCP相关问题和解决方案