可以从 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++ 把引用作为函数返回值相关推荐

  1. C++ 笔记(15)— 引用(声明引用、引用作为参数、引用作为函数返回值、const 用于引用)

    引用是变量的别名.也就是说,它是某个已存在变量的另一个名字.一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量. 1. 创建引用 要声明引用,可使用引用运算符 & ,如下面的 ...

  2. “引用作为函数参数”与 “引用作为函数返回值”

    一.引用作为函数参数 作为函数参数时引用有两种原因: 1.在函数内部会对此参数进行修改:2.提高函数调用和运行效率. 关于第一点,都知道C++里提到函数就会提到形参和实参.如果函数的参数实质就是形参, ...

  3. c++_函数返回值,引用作为函数返回值

    catalog 函数返回值 返回值是`[const] T &` 返回值的类型是 T 返回的对象是 局部对象 实现原理 返回的对象是 全局对象 实例 函数返回值 返回值是[const] T &a ...

  4. C++将“引用”作为函数返回值类型的格式、好处和注意事项?

    格式: 类型标识符 &函数名(形参列表及类型说明){ //函数体 } 好处: 在内存中不产生被返回值的副本:(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的.因为随着该局部变量生 ...

  5. 引用之函数返回值 函数的返回值为引用类型《三》

    一: 可以把函数定义为引用类型,这时函数的返回值即为某一变量的引用(别名),因此,它相当于返回了一个变量,所以可对其返回 值进行赋值操作.这一点类同于函数的返回值为指针类型. 由于函数调用返回的引用类 ...

  6. C++右值引用与函数返回值

    大一的时候在matrix上打的一道题目, 出现了迷之BUG, 后来请教了助教, 是右值引用的问题. bool operator != (simple_iterator &a) {return ...

  7. C++ 引用作为函数返回值

    (1)以引用返回函数值,定义函数时需要在函数名前加 & (2)用引用返回一个函数值的最大好处是,在内存中不产生被返回值的副本. 引用作为返回值,必须遵守以下规则: (1)不能返回局部变量的引用 ...

  8. 函数返回值是否使用引用类型的问题:理解引用、返回值

    在<对象更有用的玻璃罩--常引用>一文中,介绍了对象作为函数的参数时,推荐使用引用的形式.并且,如果实际参数的值不允许改变时,声明为常引用更佳. 在<第8周-任务1-方案3-复数类中 ...

  9. 2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码)

    2020-09-22C++学习笔记之引用1(1.引用(普通引用)2.引用做函数参数 3.引用的意义 4.引用本质5.引用结论 6.函数返回值是引用(引用当左值)7测试代码) 1.引用(普通引用) 变量 ...

  10. 14. 函数返回值为引用?

    函数返回值可以是引用吗? 当然可以,只是在函数返回引用的时候需要注意几点.以下给出讨论! 函数在返回值的时候,会产生一个临时变量作为函数返回值的副本:而函数在返回引用的时候,不会产生副本!那么既然是引 ...

最新文章

  1. ACM第一名:基于轨迹感知多模态特征的视频关系检测
  2. 技本功丨呀~我不会写CSS之vertical-align(上集)
  3. MATLAB报错“Integers can only be raised to positive integral powers.“
  4. Linux编译动态链接库
  5. java 匿名类 实现接口_细谈 Java 匿名内部类 【分别 使用 接口 和 抽象类实现】...
  6. 在Windows上编译最新版本的Hashcat
  7. maven的java工程取mysql数据库数据
  8. Web 应用客户端渲染和服务器端渲染的比较
  9. I - Triple HDU - 5517
  10. hadoop单击模式环境搭建
  11. bzoj 2435: [Noi2011]道路修建(DFS)
  12. php单例模式代码,php设计模式之单例模式代码
  13. dbf 转mysql_DbfToMysql-DbfToMysql(Dbf数据转换Mysql工具)下载 v1.6官方版--pc6下载站
  14. 常用信号去噪与信号回归方法的原理及MATLAB实现
  15. linux 内网网络波动检测,Linux内网测试环境模拟网络丢包和延时
  16. 服务器查看账户被锁的信息吗,远程服务器帐户被锁定
  17. 自助查询打印机应用瓶颈
  18. pure virtual method called 纯虚函数被调用原理分析
  19. 学术党必备:Zotero一键导出BibTex 参考文献
  20. python提取数字前6位_取Pandas列的前6位数

热门文章

  1. RichContentLabel使用注意
  2. 更轻松的获取APK文件安装时间
  3. Python 字典 get() 方法
  4. 根据姓名判断性别-人工智能
  5. 异步消息的传递-回调机制(转)
  6. 时间复杂度为O(n)的计数排序算法
  7. 拓端tecdat|R语言非参数模型厘定保险费率:局部回归、广义相加模型GAM、样条回归
  8. linux快捷删除151617文件,mengzhaoliang
  9. 软件是怎么控制硬件的?
  10. 基于队列的医院挂号模拟系统