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

如何查看网站有没有收录网站建设需什么软件

如何查看网站有没有收录,网站建设需什么软件,wordpress 产品货号,网络营销推广四个步骤C中拷贝构造和赋值重载的注意事项以及编译器的优化处理前言1. 拷贝构造和赋值重载的易混淆点和注意事项1.1 易混淆点1.2 注意事项2.编译器对拷贝构造和赋值重载的优化处理前言 本文可以帮助你对下面: (1)何时调用拷贝构造何时调用赋值重载 &a…

C++中拷贝构造和赋值重载的注意事项以及编译器的优化处理

    • 前言
    • 1. 拷贝构造和赋值重载的易混淆点和注意事项
      • 1.1 易混淆点
      • 1.2 注意事项
    • 2.编译器对拷贝构造和赋值重载的优化处理

前言

本文可以帮助你对下面:
(1)何时调用拷贝构造何时调用赋值重载
(2)在拷贝构造函数和赋值重载函数的参数加const的意义
(3)自定义类型的隐式类型转换
(4)编译器对自定义类型隐式类型转换的优化
(5)自定义类型引用常量的意义
方面有更加深刻的理解

1. 拷贝构造和赋值重载的易混淆点和注意事项

1.1 易混淆点

在这里插入图片描述
上图代码中的Date d2(d1);这句话大家可以很快就判断出是拷贝构造。

在这里插入图片描述

上图代码中的Date d3 = d1 + 15;拷贝构造Date d2 = d1 + 10;赋值重载

原因如下:

(1)由于d3是为初始化的Date对象并用d1+15来初始化,即使使用等号来初始化,编译器还是会识别它为拷贝构造,相当于把Date d3 = d1 + 15;转化为Date d3(d1);因此是拷贝构造
(2)然而d2是已经存在的对象,并用d1+10来赋值因此是赋值重载


1.2 注意事项

拷贝构造和赋值重载函数的参数,最好加const,否则以上面的例子为例,可能会出错:
以代码Date d3 = d1 + 15;为例:

在这里插入图片描述

如上图首先先调用运算符重载operator+,由于retoperator+里的局部变量,出了作用域就会自动删除,因此会先将ret拷贝到临时对象后才返回值(调用了拷贝构造),而临时对象为右值,具有常性(相当于用const修饰),这个临时对象又作为拷贝构造函数的参数,由于参数的类型是const Date,而拷贝构造函数需要接收Date&类型的参数,存在引用的权限放大的问题,因此编译器会报错!
同理,Date d2 = d1 + 10;也会报错。

所以我们习惯在拷贝构造和赋值重载函数的参数中为其添加const进行修饰,有两个好处:
(1)防止误写入
(2)避免权限放大问题
在这里插入图片描述


2.编译器对拷贝构造和赋值重载的优化处理

在这里插入图片描述

观察上面的两句话,第一句Date d1(2022);是大家熟知的构造函数
让人疑惑的是第二句Date d2(2022);中的Date类型的d2为什么能用int类型的2022来赋值呢?
其实这里是隐式类型的转化,在类的构造函数没有被explicit修饰的时候,编译器允许这种转化。
也就是把2022这个整形变量隐式转化为Date类型的变量。隐式类型转化的步骤如下:
(1)传一个参数调用构造函数来初始化一个const Date类型的临时对象
(2)调用Date的拷贝构造函数,将临时对象作为拷贝构造函数的参数,从而初始化d2.
在这里插入图片描述
也就是说,Date d2 = 2022;这个语句会先调用一次构造函数,再调用一次拷贝构造函数,但是大胆点的编译器(如VS2019)会对其步骤进行优化,对其进行合二为一。
也就是直接将2022作为d2的构造函数的参数对d2进行初始化。
在这里插入图片描述


值得一提的是,在对int类型的常量2022进行引用操作的时候,编译器就会老老实实按照创建临时对象并调用其构造函数进行初始化,类型为const Date。再对其进行引用。
因此Date& d2 = 2022;的写法是错误的,存在权限放大
正确的写法是const Date& = 2022;
在这里插入图片描述
实际意义可以体现在String类:
下图中的Func("hello");这句话就是用"hello"初始化了一个const String类的对象,因此用string来引用的时候会报错,要想用"hello"来调用Func函数的话,就必须加上const。
加上const前,编译器报错:
在这里插入图片描述
加上const后,可以正常调用:
在这里插入图片描述

http://www.yayakq.cn/news/500660/

相关文章:

  • 优质网站建设报价做设计需要知道的几个网站吗
  • 网站降权查询工作室建设基础
  • 天河做网站公司在那可以做公司网站
  • cn网站网站建设 账务处理
  • 北京网站设计济南兴田德润团队怎么样wordpress插件有何用
  • 二级域名怎么指向另外一个网站能利用双股铜芯电话线做网站吗
  • 专业北京网站建设公司排名番禺做哪些做网站的
  • 网站我优化外汇seo公司
  • cdn网站加速有用吗wordpress自带分页函数
  • 宁波网站制作与推广开锁公司网站建设
  • 自己做的网站访问速度慢旅游网站开发意义和背景
  • 新兴县建设局网站工程建设项目审批流程图
  • 长辛店网站建设商城设计app网站建设
  • 西宁网站托管建筑信用信息查询平台
  • 高端装饰公司网站设计网站怎么申请域名
  • 如何编辑网站标题栏网站设计广州
  • 北京公司建一个网站需要多少钱第一次做网站怎么样下手
  • 仙桃做网站的个人网站建设网站规划书
  • php一台电脑做网站做淘宝客网站
  • 北京大兴网站建设公司咨询平泉县住房和城乡建设局网站
  • 国外辣妹服装设计网站推荐好的建站平台
  • 电商网站 手续地产公司网站建设方案
  • 齐齐哈尔北京网站建设做网站哪些
  • 搜索网站建设网站 建设
  • 常州全景网站制作太原网站建设工作室
  • 做网站的名字大全网站维护 代码
  • 建设网站模板免费空间中国网站
  • 网站建设时间及简介网站建设如何搭建框架
  • 重庆市建设工程造价站苏州淘宝运营培训
  • 天津建站模板搭建苏州建设工程公司网站