1.重载+=操作符返回*this或者某个参数的引用可以方便链式调用,比如C++流操作就是cout<< a << b << c这样的,就是靠不停返回stream的引用

类似于这样:

ostream &operator<<(ostream &os,const String &st)
{
os<<st.str;
return os;
}

  

2.返回类成员变量的引用,最好加const,不破坏类成员的封装性

如下:复制于 C++ 中引用有什么用? - 谢之易的回答 - 知乎 https://www.zhihu.com/question/34267829/answer/58414818

3. 还有就是一般容器类里面主要是std::vector、std::map等STL容器的operator[],不返回引用,无法修改a[x]的值,为了同时支持a[x]的取值和a[x]=v的赋值两种操作,就需要a[x]返回一个左值,

用指针的话你得解引用才能成为一个左值表达式,不直观至于其他情况很多时候改用指针也不算很不方便,传闻C++引入引用语法主要就是因为

上面这个原因在不支持引用却需要支持[]运算符重载的语言中,也有其他实现方式,但会复杂一些,例如python是将[]的取值和赋值分开成两个重载方法来定义

 

C++返回引用的需求的更多相关文章

  1. C# 7.0 新特性4: 返回引用

    本文参考Roslyn项目中的Issue:#118. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: 模式匹配 ...

  2. c++中有些重载运算符为什么要返回引用

    事实上,我们的重载运算符返回void.返回对象本身.返回对象引用都是可以的,并不是说一定要返回一个引用,只不过在不同的情况下需要不同的返回值. 那么什么情况下要返回对象的引用呢? 原因有两个: 允许进 ...

  3. C++返回引用的函数

    要以引用返回函数值,则函数定义时的格式如下: 类型标识符&类型名 (形参列表及类型说明) { 函数体 } 用const限定引用的声明方式为: const 类型标识符&引用名=目标变量名 ...

  4. c++中返回对象与返回引用的区别

    这几天在做用C++做课程设计,对其返回对象的实现感到迷惑. 通过对汇编代码的分析,可以清楚的看到,直接返回引用和返回对象的区别到底是什么. 分析的程序如下 #include<cstdio> ...

  5. 读书笔记 effective c++ Item 21 当你必须返回一个对象的时候,不要尝试返回引用

    1. 问题的提出:要求函数返回对象时,可以返回引用么? 一旦程序员理解了按值传递有可能存在效率问题之后(Item 20),许多人都成了十字军战士,决心清除所有隐藏的按值传递所引起的开销.对纯净的按引用 ...

  6. php函数返回引用示例

    <?php class Test { public $userCache; public function init() { for($i = 0; $i < 5; $i++) { $us ...

  7. 【c++】c++中重载输出操作符,为什么要返回引用

    针对:ostream & operator <<(ostream & os, const ClassType &object) 说明几点: 1.第一个形参为对ost ...

  8. c++赋值运算符为什么要返回引用?

    为什么赋值运算符要返回引用?? 因为赋值操作会改变左值,而 + 之类的运算符不会改变操作数,所以说赋值运算符重载要返回引用以用于类似 (a=b)=c 这样的再次对a=b进行写操作的表达式.+ 返回一个 ...

  9. (C/C++学习)21.C++中返回引用和返回对象以及传引用和传对象问题

    说明:在学习和编写C++代码时,经常会遇到这样的问题:一个带返回值的函数,到底应该返回值呢,还是应该返回引用呢:在传递参数的时候,是应该传递参数的引用呢,还是应该传值呢?请看下面代码: void my ...

随机推荐

  1. jQuery-介绍 加载 选择器 样式操作 属性操作 绑定click事件

    jQuery - 介绍 加载 选择器 样式操作 属性操作 绑定click事件 注意:以下部分问题不能实现效果,因该是单词拼写错误(少个t)或者没有加引号(“swing”)... jquery介绍 jQ ...

  2. Android中onTouch方法的执行过程以及和onClick执行发生冲突的解决办法

    $*********************************************************************************************$ 博主推荐 ...

  3. 高可用开源方案Heartbeat vs Keepalived

    转:http://www.kuqin.com/shuoit/20140623/340745.html 最近因为项目需要,简单的试用了两款高可用开源方案:Keepalived和Heartbeat.两者都 ...

  4. static 关键字的使用及说明

    static 关键字主要有以下几种使用场景: 修饰类的成员变量. 修饰类的成员方法. 修饰类的代码块. 修饰内部类. 1. static 修饰类的成员变量时,被称为静态成员变量.引用 static 修 ...

  5. uoj74 【UR #6】破解密码

    题目 发现这个题的本质就是在做\(\rm hash\) 我们显然能够列出\(n\)个方程,之后高消,这是\(O(n^3)\)的 但是观察一下第一个和第二个方程 \[a_{1}26^{n-1}+a_{2 ...

  6. myeclipe 中配置maven

    1.配置maven 2. 2

  7. Java中哪个JSON库的解析速度是最快的?

    JSON已经成为当前服务器与WEB应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考 了.我们很少会去想用到的这些JSON库到底有什么不同,但事实上 ...

  8. SpringBoot Redis 订阅发布

    一  配置application.yml spring: redis: jedis: pool: max-active: 10 min-idle: 5 max-idle: 10 max-wait: 2 ...

  9. Tomcat - 基本知识

    基本概念 Tomcat是接收和解析http请求,并将结果返回客户端的应用程序 轻量级的web应用服务器 适用于并发性不是很高的系统中 开发和调试jsp的首选 类似的应用程序:Jetty, JBoss/ ...

  10. 校园商铺-4店铺注册功能模块-4Dto之ShopExecution的实现

    1. DTO:添加店铺的返回类型 问题:为什么不直接用实体类Shop呢? 原因:在操作Shop的时候,必然会有一个状态.添加店铺,添加成功,还是添加失败? 如果添加失败,失败是一个什么状态,这些都是要 ...