首页 > 其他分享 >learncpp-21 操作符重载

learncpp-21 操作符重载

时间:2024-07-22 22:29:56浏览次数:14  
标签:const 21 对象 运算符 learncpp 重载 拷贝 赋值

21 操作符重载

21.12 重载赋值运算符

  • 拷贝构造器和拷贝赋值运算符的作用几乎相同,都是将一个对象复制到另一个对象。但是拷贝构造器初始化新的对象,而赋值运算符替换已有对象的内容

如果在拷贝前必须创建一个新对象,则使用拷贝构造器(包括按值传递和按值返回)
如果在拷贝前无需创建一个新对象,则使用赋值运算符
判断是调用拷贝构造器还是调用赋值运算符,主要看是否有新的对象产生。如果有就是调用拷贝构造器,如果没有就是调用赋值运算符

  • 拷贝赋值运算符必须重载为成员函数
  • 当拷贝赋值运算符涉及到动态内存分配时,自赋值就可能出问题
  • 如果没有显式定义拷贝赋值运算符,则编译器会隐式提供一个公共的拷贝赋值运算符。这个拷贝运算符进行成员间的赋值(与默认的拷贝构造器一样)

如果类有const成员,那么编译器会将隐式的拷贝赋值运算符定义为deleted,这是因为const成员不能被赋值,因此编译器假定这个类是不可赋值的
如果想让一个带有const成员的类可以被赋值,需要显式重载赋值运算符并且手动给每个非const成员赋值

标签:const,21,对象,运算符,learncpp,重载,拷贝,赋值
From: https://www.cnblogs.com/akongogogo/p/18317129

相关文章

  • learncpp-1 C++基础
    1C++基础1.1语句和程序结构语句是一条让计算机执行某个动作的指令,是C++语言中最小的独立计算单元在高级语言(例如C++)中,一条语句可能编译成多条机器指令大多数语句以;结尾声明语句跳转表达式语句复合语句选择语句(条件语句)迭代语句(循环语句)try代码块函......
  • learncpp-2 函数和文件
    2函数和文件2.9命名冲突和命名空间两个(或多个)同名函数(或全局变量)被引入到属于同一程序的不同文件中,这将导致链接器错误。两个(或多个)同名函数(或全局变量)被引入到同一个文件中。这将导致编译器错误。不同的作用域(例如命名空间)中可以有相同的标识符只有声明和定义可以出现......
  • 我的收藏周刊121
    文章分享Npcapinternalsnpcap,Wireshark在windows下依赖的抓包库实现,其内部抓包实现原理,与unix/linux下的libpcap有所不同,注意这里只是原理介绍,不涉及具体代码,而且代码看起来也没有开源。npcap是winpcap的继承者,winpcap支持到Windows10之前,Windows10及之后的Windows版本只......
  • 周报 | 24.7.15-24.7.21文章汇总
    为了更好地整理文章和发表接下来的文章,以后每周都汇总一份周报。Coggle数据科学|国产大模型速度评测(谁是更快大模型?)-CSDN博客周报|24.7.8-24.7.14文章汇总-CSDN博客计算机视觉研究院|CVPR:零样本通用分割框架(附源代码)-CSDN博客python|bashplotlib,一个有趣的Python库......
  • 【日记】坏了,0721 真成为柚子厨的标记了(418 字)
    正文今天是7月21号,0721,然后柚子社入驻B站了,开始我以为是整活,结果发现是真的。草,这下0721真成柚子厨纪念日了。有点难绷又有点好笑。睡觉的一天。我原以为14:30睡到16:30差不多了,結果一觉睡到17:30。草。我想着周末,也就没设闹钟了,睡到什么时候随缘。渐渐习......
  • 【2024-07-21】连岳摘抄
    23:59让我们保持勇气,试着学会忍受与宽大。                                                 ——梵高你说自己慕强。这是女性择偶的本能,不奇怪。但是慕强也会带来不......
  • 上周热点回顾(7.15-7.21)
    热点随笔:· 求救信:救下园子,保住这块开发者的天地 (博客园团队)· 给博客园的寄语 (☆№忧忧★♂)· 36岁,大龄剩男,2024上半年总结...... (久曲健)· 我不应该用JWT的! (sum墨)· 线程池遇到父子任务,有大坑,要注意! (why技术)· 架构与思维:微服务架构的思想本质 (Hello-Br......
  • ping内网Ip,找出内网21网段未被使用的ip地址
      #!/usr/bin/envpython#-*-coding:utf-8-*-importsubprocessimportipaddressdefping_ip(ip,count=3):"""PinganIPaddressusingthesystem'spingcommandwithagivencount."""#构造ping命令para......
  • 2101. 引爆最多的炸弹 Medium
    给你一个炸弹列表。一个炸弹的 爆炸范围 定义为以炸弹为圆心的一个圆。炸弹用一个下标从 0 开始的二维整数数组 bombs 表示,其中 bombs[i]=[xi,yi,ri] 。xi 和 yi 表示第 i 个炸弹的X和Y坐标,ri 表示爆炸范围的 半径 。你需要选择引爆 一个 炸弹。当......
  • 7.15-7.21 总结
    做题:主要完成了一些https://www.luogu.com/article/ki71nw88中的dp题目和Eltaos_xingyu的dp。题目不算非常困难。学习:学习了Pfaffian和线段树分裂和Trie树全局+1的Trick。开始了《HandbookofEnumerativeCombinatorics》一本书的阅读,是一本组合计数的书。获得......