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

前几年做那些网站能致富如何用微信分享wordpress

前几年做那些网站能致富,如何用微信分享wordpress,雅奇小蘑菇做网站好不好用,网站设计和平面设计目录 一、前言 二、explicit关键字是什么#xff1f; 三、构造函数还具有类型转换的作用 #x1f34e;单参构造函数 ✨引出 explicit 关键字 #x1f34d;多参构造函数 ✨为什么需要explicit关键字#xff1f; ✨怎么使用explicit关键字#xff1f; 四、总结 五…目录 一、前言 二、explicit关键字是什么  三、构造函数还具有类型转换的作用 单参构造函数 ✨引出 explicit 关键字  多参构造函数 ✨为什么需要explicit关键字  ✨怎么使用explicit关键字 四、总结  五、共勉 一、前言 在我们自己平时写 C 代码的时候较少会用到 explicit关键字 。但是在C相关的标准类库中看到explicit关键字的频率还是很高的。既然出现的频率这么高那么我们就来看看explicit关键字的作用到底是干什么的。 二、explicit关键字是什么  explicit是C中的一个关键字它用来修饰只有一个参数的类构造函数以表明该构造函数是显式的而非隐式的。当使用explicit修饰构造函数时它将禁止类对象之间的隐式转换以及禁止隐式调用拷贝构造函数。         这能这么说大家不太好理解既然解释中提到了 类的构造函数  那么下面我将从构造函数中详细的给大家讲解explicit其中的含义。 三、构造函数还具有类型转换的作用 在理解 explicit 关键字 之前我们必须要了解构造函数的类型转换作用以便于我们更好的理解 explicit 关键字 如果有不懂构造函数的老铁可以来看看这篇文章构造函数 单参构造函数 还是来说说老朋友日期类我们通过下面这个日期类进行讲解 class Date { public: // 构造函数Date(int year):_year(year) // 初始化列表{}private:int _year;int _month 3;int _day 31; };对于下面的 d1 很清楚一定是调用了有参构造进行初始化不过对于 d2 来说也是一种构造方式 int main() {// d1 和 d2 都会调用构造函数Date d1(2022); Date d2 2023;return 0; }我们依旧通过调试来看就会非常清晰这种 【Date d2 2023】 写法也会去调用构造函数 此时大家可能会产生疑问这种构造方式从来没有见过为什么 【Date d2 2023】会调用 构造函数呢  其实这都是因为有【隐式类型转换】的存在下面我将从一个简单的例子来为大家讲解。 在引用详解我有提到过【隐式类型转换】这个概念像下面将一个int类型的数值赋值给到一个double类型的数据此时就会产生一个隐式类型转换 int i 1; double d i;对于类型转换而言这里并不是将值直接赋值给到左边的对象而是在中间呢会产生一个临时变量例如右边的这个 i 会先去构造一个临时变量这个临时变量的类型是 [double] 。把它里面的值初始化为 1然后再通过这个临时对象进行拷贝构造给d这就是编译器会做的一件事 那对于这个 d2 其实也是一样2023会先去构造一个临时对象这个临时对象的类型是[Date]把它里面的year初始化为2023然后再通过这个临时对象进行拷贝构造给到d2 小蛋不是说构造函数有初始化列表吗拷贝构造怎么去初始化呢 //拷贝构造 Date(const Date d):_year(d._year),_month(d._month),_day(d._day) {}同学别忘了【拷贝构造】也是属于构造函数的一种哦也是会有初始化列表的 刚才说到了中间会产生一个临时对象而且会调用构造 拷贝构造那此时我们在Date类中写一个拷贝构造函数调试再去看看会不会去进行调用 很明显没有我在进入Date类后一直在按F11但是却进不到拷贝构造中这是为什么呢 原因其实在于编译器在这里地方做了一个优化将【构造 拷贝构造】优化成了【一个构造】因为编译器在这里觉得构造再加拷贝构造太费事了干脆就合二为一了。其实对于这里的优化不同编译器是有区别的像一下VC、DevC可能就不会去优化越是新的编译器越可能去进行这种优化。在本文的最后一个模块我还会详细展开分析 小蛋但您是怎么知道中间赋值这一块产生了临时对象呢如果不清楚编译器的优化机制这一块肯定就会认为这里只有一个构造  这点确实是若是我现在不是直接赋值了而是去做一个引用此时会发生什么呢 Date d3 2024;可以看到报出了一个错误原因就在于d3是一个Date类型2024则是一个内置类型的数据 但若是我在前面加一个const做修饰后就不会出现问题了这是为什么呢其实这里的真正原因就在于产生的这个【临时变量】临时变量具有常性它就是通过Date类的构造函数构造出来的同类型之间可以做引用。还有一点就是临时变量具有常性所以给到一个const类型修饰对象不会有问题  ✨ 引出 explicit 关键字  但若是你不想让这种隐式类型转换发生怎么办呢此时就可以使用到C中的一个关键字叫做explicit  它加在构造函数的前面进行修饰有了它就不会发生上面的这一系列事儿了它会【禁止类型转换】 explicit Date(int year):_year(year) {}多参构造函数 对于上面所讲的都是基于单参的构造函数接下去我们来瞧瞧多参的构造函数  //多参构造函数 Date(int year, int month ,int day 31):_year(year),_month(month),_day(day) {}根据从右往左缺省的规则我们在初始化构造的时候要给到2个参数d1没有问题传入了两个参数但是若是像上面那样沿袭单参构造函数这么去初始化还行得通吗很明显不行编译器报出了错误 小蛋那要怎么办呀对于一定要传入多参数进行构造的场景 这个时候就要使用到我们C11中的新特性了在对多参构造进行初始化的时候在外面加上一个{}就可以了可能你觉得这种写法像是C语言里面结构体的初始化但实际不是而是在调用多参构造函数 Date d2 { 2023, 3 };不仅如此对于下面这种也同样适用调用构造去产生一个临时对象 const Date d3 { 2024, 4 };那要如何去防止这样的隐式类型转换发生呢还是可以使用到explicit关键字吗 //多参构造函数 explicit Date(int year, int month ,int day 31):_year(year),_month(month),_day(day) {}可以看到加上explicit关键字做修饰同样可以起到【禁止类型转换】的作用 还有一种例外当缺省参数从右往左给到两个的时候此时只需要传入一个实参即可那也就相当于是单参构造explicit关键字依旧可以起到作用· explicit Date(int year, int month 3,int day 31):_year(year),_month(month),_day(day) {}✨为什么需要explicit关键字  所以对于可读性不是很好的代码可以使用explicit修饰构造函数将会禁止构造函数的隐式转换  ✨ 怎么使用explicit关键字 explicit关键字在C中只能用于修饰类的构造函数它用来修饰只有一个参数的类构造函数以表明该构造函数是显式的而非隐式的。         只要在构造函数名前加上explicit就能禁止类对象之间的隐式转换、禁止隐式调用拷贝构造函数。 四、总结  五、共勉 以下就是我对C explicit关键字的理解如果有不懂和发现问题的小伙伴请在评论区说出来哦同时我还会继续更新对C 的理解请持续关注我哦
http://www.hkea.cn/news/14570203/

相关文章:

  • 建网站那种服务器好移动网站和定制网站
  • 三北防护林体系建设网站自己的电脑做服务区 网站
  • 网站做游客留言做建一个英文网站需要多少钱
  • 盘锦网站建设制作重庆点优建设网站公司吗
  • 郑州网站建设知乎wordpress 留言给站长发邮件
  • 免费一级域名注册网站wordpress 插件 喜欢
  • 竞价单页网站模板苏州保洁公司哪家好一点
  • 给小学生做家教的网站wordpress 阿里cdn
  • 以前在线做预算的网站wordpress优化记录
  • 城乡与建设厅网站公司网络安全管理制度和应急工作预案
  • 做网站后台需要写代码吗惠州人才市场最新招聘信息网
  • 适合国人的wordpress主题灰色词网站seo
  • 深圳网站建设案软件开发需要用什么软件
  • 几十元做网站网站模板系统
  • 网站做海外的防护1688网站建设方案书模板
  • 企业网站模板包含什么怎么申请企业邮箱
  • 如何建设网站pdf下载十大团购网站
  • 网站怎么关闭wordpress主题 动漫
  • 做金融量化的网站网站asp源码
  • 泉州公司建设网站wordpress医疗模板下载
  • 无为县城乡建设局网站长沙网站建设大概多少钱
  • 网站建设加空间赤壁市建设局网站
  • 家具网站的建设建筑公司网页
  • 找工作网站哪个比较好建设公司网站的细节
  • 旅游网站建设方案背景描述万维网的代表网站
  • 大连零基础网站建设培训班个人建设网站
  • 关于网站建设的问卷分析html编辑器手机版
  • 无锡制作网站二维码生成器小程序
  • 咖搭姆少儿编程加盟沈阳网站建设优化
  • 多php网站建设做电影网站用什么软件叫什么名字吗