C++ 把引用作为函数返回值
可以从 C++ 函数中返回引用,就像返回其他数据类型一样。
通过使用引用来替代指针,会使 C++ 程序更容易阅读和维护。
C++ 函数可以返回一个引用,方式与返回一个指针类似。
当函数返回一个引用时,则返回一个指向返回值的隐式指针。
这样,函数就可以放在赋值语句的左边。
例如,请看下面这个简单的程序:
#include <iostream>using namespace std;double vals[] = {10.1, 12.6, 33.1, 24.1, 50.0};double& setValues(int i) { double& ref = vals[i]; return ref; // 返回第 i 个元素的引用,ref 是一个引用变量,ref 引用 vals[i],最后再返回 shit。}// 要调用上面定义函数的主函数
int main ()
{cout << "改变前的值" << endl;for ( int i = 0; i < 5; i++ ){cout << "vals[" << i << "] = ";cout << vals[i] << endl;}setValues(1) = 20.23; // 改变第 2 个元素setValues(3) = 70.8; // 改变第 4 个元素cout << "改变后的值" << endl;for ( int i = 0; i < 5; i++ ){cout << "vals[" << i << "] = ";cout << vals[i] << endl;}return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
改变前的值 vals[0] = 10.1 vals[1] = 12.6 vals[2] = 33.1 vals[3] = 24.1 vals[4] = 50 改变后的值 vals[0] = 10.1 vals[1] = 20.23 vals[2] = 33.1 vals[3] = 70.8 vals[4] = 50
当返回一个引用时,要注意被引用的对象不能超出作用域。
所以返回一个对局部变量的引用是不合法的,但是,可以返回一个对静态变量的引用。
int& func() {int q;//! return q; // 在编译时发生错误static int x;return x; // 安全,x 在函数作用域外依然是有效的
}
https://www.runoob.com/cplusplus/returning-values-by-reference.html
C++ 把引用作为函数返回值相关推荐
- C++ 笔记(15)— 引用(声明引用、引用作为参数、引用作为函数返回值、const 用于引用)
引用是变量的别名.也就是说,它是某个已存在变量的另一个名字.一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量. 1. 创建引用 要声明引用,可使用引用运算符 & ,如下面的 ...
- “引用作为函数参数”与 “引用作为函数返回值”
一.引用作为函数参数 作为函数参数时引用有两种原因: 1.在函数内部会对此参数进行修改:2.提高函数调用和运行效率. 关于第一点,都知道C++里提到函数就会提到形参和实参.如果函数的参数实质就是形参, ...
- c++_函数返回值,引用作为函数返回值
catalog 函数返回值 返回值是`[const] T &` 返回值的类型是 T 返回的对象是 局部对象 实现原理 返回的对象是 全局对象 实例 函数返回值 返回值是[const] T &a ...
- C++将“引用”作为函数返回值类型的格式、好处和注意事项?
格式: 类型标识符 &函数名(形参列表及类型说明){ //函数体 } 好处: 在内存中不产生被返回值的副本:(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的.因为随着该局部变量生 ...
- 引用之函数返回值 函数的返回值为引用类型《三》
一: 可以把函数定义为引用类型,这时函数的返回值即为某一变量的引用(别名),因此,它相当于返回了一个变量,所以可对其返回 值进行赋值操作.这一点类同于函数的返回值为指针类型. 由于函数调用返回的引用类 ...
- C++右值引用与函数返回值
大一的时候在matrix上打的一道题目, 出现了迷之BUG, 后来请教了助教, 是右值引用的问题. bool operator != (simple_iterator &a) {return ...
- C++ 引用作为函数返回值
(1)以引用返回函数值,定义函数时需要在函数名前加 & (2)用引用返回一个函数值的最大好处是,在内存中不产生被返回值的副本. 引用作为返回值,必须遵守以下规则: (1)不能返回局部变量的引用 ...
- 函数返回值是否使用引用类型的问题:理解引用、返回值
在<对象更有用的玻璃罩--常引用>一文中,介绍了对象作为函数的参数时,推荐使用引用的形式.并且,如果实际参数的值不允许改变时,声明为常引用更佳. 在<第8周-任务1-方案3-复数类中 ...
- 2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码)
2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码) 1.引用(普通引用) 变量 ...
- 14. 函数返回值为引用?
函数返回值可以是引用吗? 当然可以,只是在函数返回引用的时候需要注意几点.以下给出讨论! 函数在返回值的时候,会产生一个临时变量作为函数返回值的副本:而函数在返回引用的时候,不会产生副本!那么既然是引 ...
最新文章
- ACM第一名:基于轨迹感知多模态特征的视频关系检测
- 技本功丨呀~我不会写CSS之vertical-align(上集)
- MATLAB报错“Integers can only be raised to positive integral powers.“
- Linux编译动态链接库
- java 匿名类 实现接口_细谈 Java 匿名内部类 【分别 使用 接口 和 抽象类实现】...
- 在Windows上编译最新版本的Hashcat
- maven的java工程取mysql数据库数据
- Web 应用客户端渲染和服务器端渲染的比较
- I - Triple HDU - 5517
- hadoop单击模式环境搭建
- bzoj 2435: [Noi2011]道路修建(DFS)
- php单例模式代码,php设计模式之单例模式代码
- dbf 转mysql_DbfToMysql-DbfToMysql(Dbf数据转换Mysql工具)下载 v1.6官方版--pc6下载站
- 常用信号去噪与信号回归方法的原理及MATLAB实现
- linux 内网网络波动检测,Linux内网测试环境模拟网络丢包和延时
- 服务器查看账户被锁的信息吗,远程服务器帐户被锁定
- 自助查询打印机应用瓶颈
- pure virtual method called 纯虚函数被调用原理分析
- 学术党必备:Zotero一键导出BibTex 参考文献
- python提取数字前6位_取Pandas列的前6位数