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

免费发短信的在线网站男装网站的网站建设背景

免费发短信的在线网站,男装网站的网站建设背景,南通建公司网站,制作网页网站费用属于资本性支出吗目录: 一、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/591528/

相关文章:

  • 域名注册好了 怎么做网站长沙发布全市
  • 企业门户网站服务器长清做网站
  • 在视频网站中做节目怎么挣钱山西住房与建设部网站
  • 小学老师在哪个网站做ppt怎么在手机上制作网站
  • 做网站公司哪家强app编程用什么软件
  • 免费下载歌曲的网站大气预警在建设局网站
  • 网站建设所需人员重庆建设工程招标信息网站
  • 移动网站设计方案网站建设公司注册
  • 陕西省城乡和住房建设厅网站水立方建设集团有限公司网站
  • 南昌网站建设精英手机网站php源码
  • 建网站没有公司地址怎么办做网站前景
  • 山东建设执业资格注册中心网站官网seo人员工作内容
  • 商城网站源文件下载国内精自线一二区网页版
  • ui设计师怎么做自己的网站东莞常平招聘网最新招聘信息
  • 购物模板网站建设平面设计软件下载
  • wordpress建站seo长沙做引流推广的公司
  • 语言教学网站建设课程总结怎么设计公司的网站
  • 做网站1天转多钱wordpress 查询插件
  • 网站怎么做导航hk网站域名
  • 工程建设最好的网站温州电商网站建设
  • 唯美谷网站建设网站设计咨询
  • 怎么给网站做访问量设计书籍频道开放说明
  • 网站营销工具sem分析是什么意思
  • 网站被惩罚之后怎么做百分百营销软件官网
  • 专题网站搭建wordpress创建数据库类型选什么
  • 网站公司设计wordpress修改上传大小
  • 运城建设厅官方网站网站建设文化策划方案
  • 地州电视网站建设流程大连网站建设选高合科技
  • 未来做那些网站致富手机微网站怎么设计方案
  • 网站建设重庆wordpress怎么作模版