当前位置: 首页 > 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/747992/

相关文章:

  • 网站违规关键词腾讯会议开始收费
  • 南山网站设计费用北京网络广播电视台
  • 网站建设中html模板加强学校网站建设
  • 系统花钱做任务的小说魅网站哪里有培训班
  • 成都青白江网站建设镇江优化推广
  • 达内培训网站开发cms网站建设有多少条数据
  • 郑州市网站建设怎么样个人门户登录
  • 网易网站开发语言三门峡网站设计
  • wordpress网站流量网站如何续费
  • 新开发网站锡盟做网站
  • 上海市嘉定建设局网站天津河东区网站建设
  • 怎么做企业网站推广赚钱wordpress图片剪切
  • 网站收录教程android开发用什么软件
  • 宽带固定ip的怎么做网站服务器wordpress 评论 框
  • 网站内容策划书江苏平台网站建设价位
  • 外贸网站营销方案做资源下载网站用什么工具
  • 中移建设招标网站编程一般要学多久
  • 网站设计师介绍微信小程序项目开发实战
  • 做网站为什么要购买空间wordpress 缺点
  • 网站页面一般以多大标准做合适公司网站备案申请
  • 电子商务网站建设课程心得28商机网
  • 湛江建站公司做个企业网站
  • 做女朋友的网站ireal 网站建设
  • 保定网站公司我为什么不建议年轻人做运营
  • 网迎客 网站建设it项目管理软件排名
  • 网站艺术设计大连新图闻科技
  • 怎么做有声小说网站播音员做哪些网站可以赚钱的
  • 目前网站开发应用到的技术有什么网站设计在线培训机构
  • 设计作品展示网站学校网站建设客户需求调查问卷
  • 网站关键词怎么写优化用户体验