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

UE学习日志#20 C++笔记#6 基础复习6 引用2

3.1 const引用传递

        const 引用的参数的主要目的是效率。当将值传递给函数时,便会生成一个完整副本。传递引用时,实际上只是传递指向原始对象的指针,因此计算机无须生成副本。通过 const 引用传递,可以做到二者兼顾:不生成任何副本,并且无法更改原始变量。当处理对象时,const 引用变得更重要,因为对象可能很大,并且对其进行复制可能会产生有害的副作用。下面的示例演示如何将 std:string 作为 const 引用传递给函数:

void printString (const string& myString){
    cout << myString << endl;
}
int main(){

    string someString {"Hello World"};
    printString (someString) ;
    printString ("Hello World"); // Passing literals works.
}

3.2 值传递和引用传递

        当要修改参数并希望那些更改能够作用于传给函数的变量时,需要通过引用传递。但是,不应将引用传递的使用局限于那些情况。引用传递避免将实参复制到函数,从而提供了两个附加好处:
1.效率:复制大型的对象可能花费很长时间,引用传递只是将该对象的一个引用传给了函数
2.支持:不是所有的类都允许值传递
        如果你想利用这些好处,但又不想修改原始对象,则应将参数标记为 const,从而可以传递 const引用。
注意:
        引用传递的这些好处意味着,应该只在对于简单的内置类型,例如 int 和 double,且无须修改实参的时候使用值传递。如果需要将对象传递给函数,则更应该使用 const 引用传递而不是值传递。这样可以防止不必要的复制。如果函数需要修改对象,则通过对非 const 的引用将其传递。(在引入了移动语义之后,对该规则进行了稍微修改,允许在某些情况下对对象使用值传递。)

4 引用作为返回值

        函数也可以返回引用。当然,只有在函数终止后返回的引用所指向的变量继续存在的情况下,才可以使用此方法。
警告:
        切勿返回作用域为函数内部的局部变量的引用,例如在函数结束时将被销毁的自动分配的栈上变量。

        返回引用的主要原因是,能够直接把返回值作为左值(赋值语句的左侧)对其赋值。几个重载的运算符通常会返回引用,例如,运算符=、+=等。

        注:今天有事出去了,这篇内容算赶的。


http://www.kler.cn/a/532274.html

相关文章:

  • java-(Oracle)-Oracle,plsqldev,Sql语法,Oracle函数
  • Linux网络 | 进入数据链路层,学习相关协议与概念
  • 深入解析 Redis AOF 机制:持久化原理、重写优化与 COW 影响
  • Kubernetes核心组件详解:从原理到实践
  • Kubernetes学习之包管理工具(Helm)
  • Kafka流式计算架构
  • celery策略回测任务运行及金融量化数据增量更新|年化18.8%,回撤8%的组合策略(python代码)
  • python学习笔记5-函数的定义
  • 2022ACMToG | 寻找快速的去马赛克算法
  • 每天学点小知识之设计模式的艺术-策略模式
  • 网络安全学习 day5
  • 司库信息化解决方案(deepseek来源)
  • DeepSeek 遭 DDoS 攻击背后:DDoS 攻击的 “千层套路” 与安全防御 “金钟罩”_deepseek ddos
  • 11. 9 构建生产级聊天对话记忆系统:从架构设计到性能优化的全链路指南
  • 低空经济火热,大载重物流运输无人机技术详解
  • TensorFlow 与 PyTorch 的直观区别
  • sql表的增删改、替换
  • 扩展域并查集 带权并查集
  • 【PyQt】pyqt小案例实现简易文本编辑器
  • 【Leetcode刷题记录】1456. 定长子串中元音的最大数目---定长滑动窗口即解题思路总结
  • 代码随想录八股训练营学习总结
  • 哈希(Hashing)在 C++ STL 中的应用
  • 虚幻基础17:动画蓝图
  • 网站快速收录:如何优化网站长尾关键词布局?
  • BUU14 [极客大挑战 2019]PHP1
  • 基于Springboot框架的学术期刊遴选服务-项目演示