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

拷贝函数的三种调用方式

1.使用一个已经创建完成的对象来初始化一个新对象,就比如有参构造接收了一个属性后拷贝构造copy它后可以将获取的值赋值给自己的属性

记得拷贝后还要再进行赋值才行

2.值传递的方式给函数参数

额外声明一点,因为我们知道struct和class很相似,目前我们知道这两个的区别在于在默认情况下的权限不一样,class默认下是私有权限,而struct是公开的,但是这都不是重点,重点是他们两很相似,而struct是一个自定义数据类型时候用的,由此可以推断我们的class后面也是自定义的数据类型。

从第27行开始,我们创建了两个函数,一个work和一个test01函数,work函数的参数用数据类型person 和变量p2来接收实参,而我们的test01函数调用work并传入了自己刚刚创建的对象p1,因为是值传递所以形参的改变不会影响实参。

3.值方式返回局部对象

这里我们有两个函数work和test01,work函数创建一个对象p1,并且返回,在test01中我们调用了work函数且用p来接收这个对象,但是注意,我们值传递时,返回的对象并不是这个对象本身,是对象的副本。

至于为什么没有拷贝函数时,可能是因为c++编译器更新或达到11版本后,由一个返回值优化的功能,能够省去一些不必要的移动以及步骤,简称RVO;

http://www.lryc.cn/news/417897.html

相关文章:

  • C语言 | Leetcode C语言题解之第327题区间和的个数
  • 统计学:条件概率模型
  • 前端工程师学习springboot2.x之配置idea热更新实现高效率开发节奏
  • 文本rerank与图像rerank
  • Docker 在 Windows 系统下的使用指南:数据卷和数据库
  • [数据集][目标检测]轴承缺陷划痕检测数据集VOC+YOLO格式1166张1类别
  • 将本地微服务发布到docker镜像二:
  • 前端构建工具|vite快速入门
  • 拯救PyCharm:击退IDE内存泄漏的策略
  • 在vue3的开发环境中为什么使用vite而不是用webpack
  • mybatis结合generator进行分页插件PluginAdapter开发
  • 面试:ArrayList和LinkedList
  • 【uniapp】uniapp+vue2微信小程序实现分享功能
  • WEB渗透Web突破篇-目录爆破
  • Windows设备文件同步平台
  • 用九方智投学习机,学会应对回撤风险
  • maven打包加入本地jar包
  • 从TiDB迁移到OceanBase的实践分享
  • DL00765-光伏故障检测高分辨率无人机热红外图像细粒度含数据集4000+张
  • CICD流水线
  • Sass/Scss基础
  • 【sx sb sz】Centos/Linux sx、sb、sz命令详细介绍
  • 【网络层】IP报文解析和网段划分
  • [GXYCTF2019]禁止套娃1
  • 人工智能时代,数字化工厂如何改革?提升竞争力?
  • 气膜建筑的抗风与防火性能:保障仓储的安全—轻空间
  • 【秋招笔试】2024-08-07-YT游戏(研发岗)-三语言题解(CPP/Python/Java)
  • 【Python知识】m.inplace = inplace 《==》是否执行原地操作
  • Go语言fmt包中print相关方法
  • 图片转为pdf怎么弄?亲测有效的8个pdf转换方法安利