赋值运算符为什么返回类的引用?不是引用怎么办?

class string{public:string(const char *str=NULL);string(const string& str);     //copy构造函数的参数为什么是引用呢?  我相信大家都懂的!string& operator=(const string & str); //赋值函数为什么返回值是引用呢?~string();};

如果返回的是值时, return *this 后马上就调用拷贝构造函数。
但是如果没有定义拷贝构造函数  ,就会调用默认的拷贝构造函数。
我们知道调用默认的拷贝构造函数时当在类中有指针时可能会出错(浅拷贝)。

当在连续赋值的场景中,所以如果你不用引用做返回时,会调用拷贝构造函数,而且必须定义自定义的拷贝构造函数。

15.赋值运算符为什么返回类的引用?不是引用怎么办?相关推荐

  1. 条款15: 让operator=返回*this的引用

    C++的设计者Bjarne Stroustrup下了很大的功夫想使用户自定义类型尽可能地和固定类型的工作方式相似.这就是为什么你可以重载运算符,写类型转换函数(见条款M5),控制赋值和拷贝构造函数,等 ...

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

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

  3. 在c++语言中赋值运算符,C++语言— 类中的赋值运算符重载

    赋值运算符重载 赋值运算符的重载在这几个默认的成员函数中的位置也算是举足轻重的,它也是不好理解的一个, 下 面是我自己写的一个复数类,这里面会将赋值运算符重载踏踏实实的过完. 赋值运算符的重载的基本格 ...

  4. 类的加载流程、反射、直接引用和符号引用

    类加载流程 一个类被加载到虚拟机内存中需要经历几个过程:加载.连接.初始化.其中连接分为三个步骤:验证.准备.解析,下面一个一个说,这个几个阶段虚拟机都干了什么. 总览图 类加载过程总览图如下图: 加 ...

  5. C++ Primer 第五版 第6章 6.3——函数返回类型和return语句阅读笔记

    习题答案请参考:C++ Primer 第五版 第6章 6.3--函数返回类型和return语句习题答案 目录 6.3 返回类型和return语句 6.3.1 无返回值函数 无返回值函数的特性 6.3. ...

  6. C++ Primer 第五版 第6章 6.3——函数返回类型和return语句习题答案

    理论讲解请参考:C++ Primer 第五版 第6章 6.3--函数返回类型和return语句阅读笔记 目录 6.31 6.32 6.33 6.34 6.35 6.36 6.38 6.31 返回引用无 ...

  7. 引用参数与引用返回值

    原帖地址:http://www.cnblogs.com/bigshow/archive/2008/11/10/1330514.html 经常看到这样的声明:T& func(T& t), ...

  8. 不能返回函数内部new分配的内存的引用_JNI开发之局部引用、全局引用和弱全局引用(三)...

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 这篇文章比较偏理论,详细介绍了在编写本地代码时三种引用的使用场景 ...

  9. 返回类型和return语句

    目录 1. 返回类型和return语句 1.1 无返回值函数 1.2 有返回值函数 1.2.0 不要返回局部对象的引用或指针 1.2.1 引用返回左值 1.2.2 用列表来初始化返回值 1.2.3 主 ...

最新文章

  1. FEMS:广东生态所孙蔚旻组利用DNA-SIP宏基因组揭示锑氧化微生物及其代谢途径...
  2. .NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制
  3. selenium中webdriver跳转新页面后定位置新页面的两种方式
  4. Doxygen自动文档生成工具在Eclipse中的集成及使用举例
  5. 根据长文本拆分至内表
  6. MySQL 是如何利用索引的
  7. java中编码问题_[干货预警]一次搞懂Java中的编码问题
  8. python init 用法_python里init的用法
  9. [Ext JS ]3.4 数字输入框 numberfield
  10. gin上传文件服务器,gin-上传文件
  11. GreenPlum数据库调研及架构介绍
  12. 50道编程题(有精力的同学看看)
  13. 《自然语言处理:基于预训练模型的方法》第七章 预训练语言模型-BERT
  14. spotlight搜索失效_如何阻止某些应用在iPhone上的Spotlight搜索中显示内容
  15. java testsuite,JUnit之TestCase和TestSuite详解
  16. 王者荣耀天赐语音包怎么获得?天赐语音包获取方法介绍
  17. ufs2.1 android bench,小米6使用的是UFS2.1闪存吗?小米6闪存AndroBench跑分成绩
  18. android ftdi,从 Android FTDI串行通信开始_ftdi_开发99编程知识库
  19. 工业机器人码垛教学实施_码垛教学在ABB工业机器人的教学应用
  20. 大一统视角理解扩散模型

热门文章

  1. cocos2dx[3.2](18)——屏幕截图ScreenShot
  2. XenApp 6.0/6.5服务优化
  3. 实事求实来看综合布线网络
  4. C++三角函数用法错误error C2668: 'tan' : ambiguous call to overloaded function原因及解决方法
  5. matlab imwrite函数保存jpg格式图像丢失数据或改变图像
  6. Windows下nginx-http-flv-module服务部署
  7. ffmpeg命令行map参数的使用
  8. C/C++程序从编译到最终生成可执行文件的过程分析
  9. Go游戏服务器开发的一些思考(十):goroutine和coroutine
  10. boost之asio异步io使用实例