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

英文网站设计理念wordpress meta query

英文网站设计理念,wordpress meta query,松岗网站,wordpress怎么建设论坛目录: 一、const成员函数 二、初始化列表 三、类型转换 正文 一、const成员函数 (1)将const修饰的成员函数称之为const成员函数,const修饰成员函数放到成员函数参数列表的后⾯。至于为什么这么放是语法规定。 (2&a…

目录:

一、const成员函数

二、初始化列表

三、类型转换


正文

一、const成员函数

(1)将const修饰的成员函数称之为const成员函数,const修饰成员函数放到成员函数参数列表的后⾯。至于为什么这么放是语法规定。

(2)const实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进⾏修改。例如const 修饰Date类的Print成员函数,Print隐含的this指针由 Date* const this 变为 const

Date* const this

大家可能会疑惑为什么C++祖师爷在设计this指针的时候不直接加上呢?这样设计是有他的道理,因为加了const指针指向的内容就不能改变,假设要用this指针插入修改数据将会是很大的坑。这涉及到权限放大缩小问题。

如下图(1)对象d1调用类函数Print要取出d1的地址传给this指针,d1的地址是const Date*而Print中this类型是Date*,原本d1加const不能被修改,传给this后可以被修改这是权限放大,编译会报错。所以如果硬要传,this也得加const如(2)中所示权限平移。给this指针加const也有个好处,权限缩小,可变的对象可以传给不可变的指针。因此所有不修改成员变量的成员函数都建议加const修饰。

二、再探构造函数——初始化列表

【C++】构造与析构函数_c# 析构函数 c++析构函数-CSDN博客

(1)之前要初始化自定义类型编译器会调用它自己的默认构造,若是没有默认构造编译器会报错。如果自定义类型没有默认构造又要进行初始化还有一种方式就是初始化列表,初始化列表的使用方式是以⼀个冒号开始,接着以逗号分隔的数据成员列表,每个"成员变量"后面跟⼀个放在括号中的初始值或表达式。

(2)每个成员变量在初始化列表中只能出现⼀次,语法理解上初始化列表可以认为是每个成员变量定义初始化的地方。(这点很重要!!

为什么会有初始化列表的出现?用类型实例化对象是对对象整体开空间,如果我们要对对象里的成员单独开辟空间就要用到初始化列表,因为初始化列表是每个成员变量定义初始化的地方。而下面三种类型变量一定要走初始化列表

(3)引用成员变量,const成员变量,没有默认构造的类类型变量,必须放在初始化列表位置进行初始化,否则会编译报错

引用和const成员变量只有一次改变的机会就是在定义的时候,没有默认构造的类型变量在调用构造函数时要自己传参调用,也要走初始化列表进行传参调用。

当成员变量有自定义类型并且没有默认构造函数,其在初始化需要自己传参调用

(4)C++11⽀持在成员变量声明的位置给缺省值,这个缺省值主要是给没有显⽰在初始化列表初始化的成员使⽤的。

例如,_popst有缺省值了就没有显⽰在初始化列表初始化;_pushst有给缺省值,但在初始化列表也有显示给就用初始化列表的2000。

如果初始化列表没有显⽰初始化,默认就会⽤这个缺省值初始化

(5)尽量使⽤初始化列表初始化,因为那些你不在初始化列表初始化的成员也会走初始化列表,如果这个成员在声明位置给了缺省值,初始化列表会⽤这个缺省值初始化。如果你没有给缺省值,对于没有显⽰在初始化列表初始化的内置类型成员是否初始化取决于编译器,C++并没有规定。对于没有显⽰在初始化列表初始化的⾃定义类型成员会调⽤这个成员类型的默认构造函数,如果没有默认构造会编译错误。

(6)初始化列表中按照成员变量在类中声明顺序进⾏初始化,跟成员在初始化列表出现的的先后顺序⽆关。建议声明顺序和初始化列表顺序保持⼀致。

例题:aa传给this指针,1传给a。因为初始化列表有显示给,声明的缺省值就不起作用,按声明的顺序_a2先声明所以初始化列表也先执行_a2,_a2用_a1初始化,此时的_a1还没定义所以_a2初始化是编译器随机分配(_a1、_a2为内置类型)接着定义_a1为1。

图表总结:

三、类型转换

(1)C++⽀持内置类型隐式类型转换为类类型对象,需要有相关内置类型为参数的构造函数

我们用类实例化对象时,会根据我们给的参数个数调用对应的构造函数,这期间会发生类型转换。如下图,1是内置类型,aa1是自定义类型不能直接用其构造aa1,先用1构造出一个A类型放在临时对象中(临时对象具有常性),再用这个临时对象拷贝构造aa1。编译器遇到连续构造+拷贝构造会优化为直接构造。

(2)构造函数前⾯加explicit就不再⽀持隐式类型转换,内置类型转换为类类型对象,需要有相关内置类型为参数的构造函数。

aa4不能直接引用1是因为用1构造出一个A类型放在临时对象中,临时对象具有常性不能改变而引用时发生权限放大编译器报错,只要在类型前加上const权限平移就可以进行引用了。


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

相关文章:

  • 新手自建网站做跨境电商dede后台删了 网站还有
  • 网站及微站建设合同免费好用的网站
  • 做网上购物网站郑州seo优化培训
  • 学校文化建设网站桂林市网站建设
  • 上海地区网站开发公司互联网平台宣传推广方案
  • 网站营销型企业销售平台wordpress菜单链接关系
  • iOS开发 隐私政策网站怎么做百度app制作网站
  • 网站图片用什么软件做wordpress 前端会员中心
  • 手机自己免费制作app软件seo优化啥意思
  • 湛江专业的建站软件网页制作与设计实验报告总结
  • 签名能留链接的网站网站建设费用包括哪些内容
  • 企业网站制作简介杭州建设工程信用平台
  • 山东网站制作哪家好徐州建设工程交易网浙江公正
  • 中国建设银行官网的网站首页巴彦淖尔网站网站建设
  • 公司网站运营公司排名手机营销型网站制作
  • 官方网站下载免费apphtml免费网页模板
  • 保安公司网站如何做超级商城系统
  • 无为住建设局网站网页设计网站建设专业现状
  • 广州网站开发小程序辽宁建设工程信息网专家入库
  • 网页设计与网站建设书籍优质商品网上购物商城
  • seo网站排名全选建设网站好公司
  • 关于h5的网站模板网站运营维护工作内容
  • 网站地址搜索开发公司组织机构图
  • 发帖子的网站铁岭卫生职业学院官方网站建设
  • 豆各庄做网站的公司wordpress喜欢功能
  • 建网站如果不买域名别人能不能访问建设网站需要什么
  • 苗木门户网站模板建站快车代理商
  • 广西网站建设推广如何请人做网站
  • 学做网站论坛vip号码国外设计师wordpress主题
  • 高港做网站上海网页设计