当前位置: 首页 > news >正文

[c++语法学习]Day10:c++引用

引用做返回值

​ 做返回值的变量最好是在堆上开辟的,谨慎引用做返回值,尤其要注意函数作用域!如果出了作用域对象不在了就不能用做引用返回,否则可以使用。

1. 可以减少拷贝,提高效率
2. 修改返回值 + 获取返回值
// 	引用做返回值
// 对于有返回值的函数
// 因为当函数调用结束后会销毁栈帧
// 所以在这里一般编译器会将返回值存储在临时变量中
int count() {static int n = 0;n++;// 还是会生成临时变量return n;
}// 1.传引用返回
int& count1() {// 如果这里如果不是静态变量// 则栈帧被销毁后,返回值可能是正确可能不正确,是随机值!// 主要看编译器是否清理栈帧// 此时可以使用static int n = 0;n++;// 优点1:减少拷贝,提高效率// 尤其是大对象,深拷贝的对象return n;
}
int& count2(){// 错误❌int n = 0;n++;return n;
}
int main() {int ret = count();// 返回 n 的别名int ret1 = count1();return 0;
}
/*----------------------------------------*/
// 2.重要应用:修改返回值,获取返回值
// 尤其是在设计栈,队列等方法的过程中,因为类已经提前声明了,所以是一直存在的,所以在这里使用引用做返回值很方便
struct SeqList
{int a[100];size_t size;int& at(int pos){assert(pos >= 0 && pos < 100);return a[pos];}// 运算符重载int& operator[](int pos) {assert(pos >= 0 && pos < 100);return a[pos];}};SeqList s;s.at(2) = 20;cout <<"s.a[2] = " << s.a[2] << endl; // 这里结果为20s[2] += 10;cout << "s.a[2] = " << s.a[2] << endl;// 这里结果为30
/*----------------------------------------*/
// 3.常引用
// 引用过程中,权限不能放大,这里一个是int , 一个是 const int
const int a = 0;
int& b = a;				// 不可以// 但是权限可以平移,可以缩小
// 权限缩小的是 对应引用 的权限
int x = 0;
int& y = x;
const int& z = y;	// 可以,权限缩小
x++;
y++;
z++;				// 错误,z 是 const修饰的
http://www.dtcms.com/a/486670.html

相关文章:

  • iOS App 上架全流程详解:证书配置、打包上传、审核技巧与跨平台上架工具 开心上架 实践
  • C++设计模式_行为型模式_迭代器模式Iterator
  • [iOS] KVC 学习
  • 网站开发中用到的英文单词舅舅建筑网
  • 怎么做交易网站seo整体优化
  • 基于卷积神经网络的苹果叶片病虫害识别系统,resnet50,vgg16,resnet34【pytorch框架,python代码】
  • 【计算机组成原理】第七章:输入/输出系统
  • 深入理解 Linux NUMA:拓扑、分配策略与调优实践
  • logstash常遇问题(logstash Address already in use 5044)
  • 断点调试介绍与使用案例
  • Kafka在美团数据平台的实践
  • 【完整源码+数据集+部署教程】Aura棕榈油果实分割系统: yolov8-seg-C2f-DCNV2-Dynamic
  • 蛋白表达标签:提升重组蛋白研究与生产的关键工具
  • 网站备案编号查询wordpress 集成paypal
  • 数学口算练习抖音快手微信小程序看广告流量主开源
  • 【开题答辩过程】以《泰山珍稀动植物信息管理平台的设计与实现》为例,不会开题答辩的可以进来看看
  • wordpress 淘宝客页面seo网络培训班
  • 哪些公司做网站wordpress单选框php
  • 什么是程序计数器?
  • GEO实战之GEO 在营销生态中的定位:社交媒体、PR、内容营销的整合策略
  • 10.13 Tabs选项卡布局
  • 深圳比较好网站制作公司有哪些设置wordpress网页私有
  • seo1视频发布会优化关键词的公司
  • Uniapp微信小程序开发:onPullDownRefresh
  • 如何优化CMS的缓存机制?
  • h5游戏免费下载:Emoji自定义表情编辑器
  • AbMole小课堂丨重组R-spondin-3(RSPO3)的作用机理及其在类器官和干细胞研究中的应用
  • springboot 实现websocket通信
  • 深度学习实战:python动物识别分类检测系统 计算机视觉 Django框架 CNN算法 深度学习 卷积神经网络 TensorFlow 毕业设计(建议收藏)✅
  • app使用什么做的网站wordpress自动保存编辑器图片