首页 > 其他分享 >28.拷贝初始化和直接初始化

28.拷贝初始化和直接初始化

时间:2023-07-03 21:36:15浏览次数:30  
标签:语句 初始化 string 对象 28 拷贝 构造函数

●当用于类类型对象时,初始化的拷贝形式和直接形式有所不同:直接初始化直接调用与实参匹配的构造函数,拷贝初始化总是调用拷贝构造函数。拷贝初始化首先使用指定构造函数创建一个临时对象,然后用拷贝构造函数将那个临时对象拷贝到正在创建的对象。举例如下

string str1("I am a string");//语句1 直接初始化
string str2(str1);//语句2 直接初始化,str1是已经存在的对象,直接调用拷贝构造函数对str2进行初始化
string str3 = "I am a string";//语句3 拷贝初始化,先为字符串”I am a string“创建临时对象,再把临时对象作为参数,使用拷贝构造函数构造str3
string str4 = str1;//语句4 拷贝初始化,这里相当于隐式调用拷贝构造函数,而不是调用赋值运算符函数  

●为了提高效率,允许编译器跳过创建临时对象这一步,直接调用构造函数构造要创建的对象,这样就完全等价于直接初始化了(语句1和语句3等价),但是需要辨别两种情况。

○当拷贝构造函数为private时:语句3和语句4在编译时会报错

○使用explicit修饰构造函数时:如果构造函数存在隐式转换,编译时会报错

标签:语句,初始化,string,对象,28,拷贝,构造函数
From: https://www.cnblogs.com/codemagiciant/p/17524128.html

相关文章

  • 【安全学习之路】Day28
    前段日子实习加考试,忙得很。现在重新再开始现在也开始web的学习阶段......
  • 华为超聚变2288H V5 服务器安装Windows系统后 PCI数据捕获和信号处理控制器 出现感叹
    2288Hv5服务器安装Windows系统后,PCI数据捕获和信号处理控制器出现感叹号可以在IBMC界面的“诊断-黑匣子”关闭黑匣子功能,然后重启设备解决也可以通过在操作系统侧安装IBMA软件解决2288Hv5服务器安装Windows系统后,PCI数据捕获和信号处理控制器 出现感......
  • P2895(未解决)
    这是一道略复杂的常规BFS题,但我想用DFS来解决,结果写出代码却总是主函数异常返回,不知哪里错了,检查半天也没发现,以后再看看吧。Code#include<iostream>#include<cstdio>#include<string>#include<vector>#include<algorithm>#include<cstdlib>#include<cmath>usingnamesp......
  • 如何把本地项目初始化到gitLab上去,干货分享!!
    说明:1.适用范围(高手请忽略)例如:你本地已经有一个项目了(或者别人发一个项目给你),但是你需要把这个项目托管到你的gitLab上去操作步骤:1.首先在你的gitLab上建一个空的工程目录(很简单,百度一下),建好之后看到应该是这个样子的,上面也有对应的使用说明,教你如何把本地项目上传文件到git......
  • 2023年暑假集训总结/6.28
    6-28T1二分哥Um_nik是一个很强的Codeforces选手。Petr也是一个很强的Codeforces选手。对于某个排列,我们定义一次“交换”为选择两个不同的位置将他们交换。他们两个人各自拿到一个长度为n的初始升序的排列,随后Um_nik会将这个排列“交换”7n+1次......
  • GT1078和GB28181 平台录像和下载
     car-eye在GT1078视频服务器开发中曾经搭建FTP服务器来实现视频文件下载功能。在GT1078协议里,是通过FTP服务上传视频文件到FTP服务器,然后客户端从FTP服务器下载视频文件,这是标准的官方给出的下载实现方式。但是很遗憾的是,这种实现方式是有缺陷的--与设备厂家实现脱离了。我们在......
  • GB28181 视频服务器文档整理
     CarEye开发GB28181服务器有将近两年时间了,早期我们用纯C++开发了一个GB28181视频服务期,对外的接口是基于MQ协议的。这样开发出来的服务器主要有几个问题。1.SIP服务器和流媒体服务器是绑定在一个进程中的,因为没有分离,造成了视频处理和SIP服务器只能在一台服务器上运行,既不能打......
  • 328. 奇偶链表
    难度中等707给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。你必须在......
  • Java中Map初始化时直接赋值的方法
    publicstaticfinalMap<String,String>BANK_TYPE=newHashMap<String,String>(){undefinedprivatestaticfinallongserialVersionUID=1L;//可有可无{undefinedput("ZX","中信银行");put("PN",&qu......
  • java List复制:浅拷贝与深拷贝
    Java的拷贝可以分为三种:浅拷贝(ShallowCopy)、深拷贝(DeepCopy)、延迟拷贝(LazyCopy)。在java中除了基本数据类型之外(int,long,short等),还存在引用数据类型,例如String以及对象实例。对于基本数据类型,实际上是拷贝它的值,而对于引用数据类型,拷贝的就是它的引用,并没有创建一个新的......