函数返回引用类型
来源:互联网 发布:宁波矩阵电子有限公司 编辑:程序博客网 时间:2024/03/28 19:44
何为引用?
引用就是某个目标变量的别名。 int a = 0; int &b = a; 有一块内存空间,存放0这个值。创建时给它取名字叫a。后面为了某些原因,又给它取了个名字b。对a和b所做的操作效果是完全相同的。声明一个引用必须同时对其初始化,引用只有目标变量的存在才有意义。
当返回一个变量时,会产生拷贝。当返回一个引用时,不会发生拷贝,你可以将引用看作是一个变量的别名,就是其他的名字,引用和被引用的变量其实是一个东西,只是有了两个名字而已。
问题的关键是,当你想要返回一个引用而不是一个拷贝时,你要确保这个引用的有效性,比如:int & fun() { int a; a=10; return a; }。这样是不行的,因为a会在fun退出时被销毁,这时返回的a的引用是无效的。这种情况下,如果fun的返回类型不是int & 而是int就没有问题了。
因此,要返回一个引用时,“临时变量“不能是“临时”的,至少得等函数外部使用完毕这个引用之后,才能销毁它。
既然返回引用和返回目标变量的效果一样,而引用又会出现问题,那么为什么还要返回引用呢?
返回引用和向函数的形参引用的道理是一样的。返回值是原来对象的副本,需要进行拷贝,在栈中生成一个临时对象,再复制给接受返回值的对象。这个过程会调用两次拷贝构造函数,对于一个体积比较大的对象,需要很大的开销。而返回引用则可以避免这些问题。
必须注意不可以返回临时对象的引用。
既然返回引用和返回目标变量的效果一样,而引用又会出现问题,那么为什么还要返回引用呢?
返回引用和向函数的形参引用的道理是一样的。返回值是原来对象的副本,需要进行拷贝,在栈中生成一个临时对象,再复制给接受返回值的对象。这个过程会调用两次拷贝构造函数,对于一个体积比较大的对象,需要很大的开销。而返回引用则可以避免这些问题。
必须注意不可以返回临时对象的引用。
- 函数返回引用类型
- 函数返回引用类型
- 返回引用类型的函数
- 引用作为函数返回类型
- 函数返回值:引用类型和非引用类型
- c++:函数返回引用类型和非引用类型
- C++基础---有返回值类型函数(返回引用类型)
- 函数返回引用和指针类型
- 函数返回值为引用类型
- 函数返回引用和指针类型
- 函数返回引用类型的值
- 将“引用”作为函数返回值类型
- C++函数的返回值——返回引用类型&非引用类型
- C++函数的返回值——返回引用类型&非引用类型
- C++函数的返回值——返回引用类型&非引用类型
- C++函数的返回值——返回引用类型&非引用类型
- C++函数的返回值问题(1)——返回引用类型&非引用类型
- C++函数的返回值——返回引用类型&非引用类型
- thinkphp中$_validate属性
- cmd文件编写
- 高负载高并发应用 参考索引
- 继承ViewGroup研究(1)--简介和一个小Demo
- 如何利用Object Browser图形化工具提高Oracle开发工作效率(三)数据库管理篇
- 函数返回引用类型
- C++,C#,JAVA之间webservice互操作问题探讨
- 项目中文乱码解决
- Android FragmentManage FragmentTransaction介绍
- jboss 加密数据源文件
- maven开发环境快速搭建一
- 简单驱动Makefile详解
- 集群LVS+GFS+ISCSI+TOMCAT
- Android弹出浮窗对话框