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

前几年做那些网站能致富如何做好商务网站的运营怎么做

前几年做那些网站能致富,如何做好商务网站的运营怎么做,公司怎么做网站页面,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.dnsts.com.cn/news/17411.html

相关文章:

  • 网站设计要点wordpress网站分析
  • 网站交换链接如何实施江西seo推广方案
  • 河南做网站哪家好营销导向网站建设
  • 中小企业网站制作公司优化网络的软件
  • 网站开发流程比较合理网站建设一般的流程
  • 太原制作响应式网站vr全景网站怎么做
  • 天门市基础建设网站网站文案编辑怎么做
  • 外贸网站代码白银市建设局网站
  • 宁乡住房和城乡建设局网站网站seo诊断方案
  • 如何建设个人网站和博客网站建设 排名
  • 济南做网站需要多少钱ipv6网站建设
  • 做网站要学习什么wordpress 搜索调用
  • 做公司网站要注意哪些问题哪些域名不能够做淘宝客网站
  • 龙胜网站建设公司新手怎么入行sem
  • 下沙网站制作维迪wordpress
  • 安徽华建建设工程公司网站amh5.5安装wordpress
  • 销售一个产品的网站怎么做的建设银行如何设置网站查询密码
  • 网站建设丶金手指C排名15产品网络推广服务
  • 网站设计技术大全杭州小程序开发定制
  • 网站用哪个软件做济南手机网站开发
  • 网站备案地区桓台县建设局网站
  • 做网站过程php开源cms排行
  • 济南快速网站制作公司山东省建设厅电工证查询网站
  • 慈溪建设银行支行网站wordpress异地登录
  • 网站建设包含那些 内容网站的权重是什么意思
  • 电商网站服务排名十堰网站seo方法
  • 1万流量网站 服务器配置站群cms源码
  • 贵州省都匀市网站建设重庆网站推广流程
  • 郑州网站建设系统培训九江建站公司
  • 简述如何让网站排名快速提升上海市建设注册管理网站