博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++中使用初始化列表的情况
阅读量:4306 次
发布时间:2019-06-06

本文共 597 字,大约阅读时间需要 1 分钟。

http://blog.csdn.net/iceshirley/article/details/5688696

要理解这个问题,从概念上,我们要知道一点,那就是构造函数的执行过程会分成两个阶段:隐式或显示的初始化阶段以及一般的计算阶段。计 算阶段由构造函数体内的所有语句组成,在计算阶段,数据成员的设置被认为是赋值,而不是初始化。

      而初始化是显式的还是隐式的,取决于是否存在初始化函数列表。隐式初始化阶段按照声明的顺序依次调用素有基类的缺省构造函数,然后是所有成员类对象的缺省构造函数。

     

      现在我们回归主题,有了上面的基础,我们可以继续阐述这个问题,首先给我要使用成员初始化列表的三种情况

      一,需要初始化的数据成员是类对象的情况(该类没有默认构造函数);
      二,需要初始化const数据成员;
      三,需要初始化引用数据成员;
 
      对于第一种情况,大家知道,对于类对象,初始化和赋值是不同的,赋值会带来了很大的性能开销。
      对于第二种以及第三种情况,从const和引用的语法上来讲,他们在使用之前必须要被初始化。
     
      另外,类中每个成员在成员初始化表中只能出现一次,初始化的顺序不是由名字在初始化表中顺序决定,而是由成员在类中被声明的顺序
决定。但是初始化表中的成员,总是在构造函数体内成员的赋值之前被初始化。
 
 

转载于:https://www.cnblogs.com/hdu-edu/p/4003051.html

你可能感兴趣的文章
tomcat调优方案Maximum number of threads (200) created for connector with address null and port 8091...
查看>>
java类的加载机制
查看>>
MDK linker和debug的设置以及在RAM中调试
查看>>
CocosCreator2.1.0渲染流程与shader
查看>>
制作新网络框架快速自动生成消息结构体的编辑器
查看>>
[转]Device Context 设备环境 设备上下文 理解
查看>>
事务的传播性和隔离级别
查看>>
2018.3.24 struct
查看>>
Linux系统删掉多个文件
查看>>
【随笔】Win7下GVIM的安装与配置
查看>>
协程,IO模式
查看>>
移动端meta标签
查看>>
是前端类库还是前端框架?
查看>>
解决glib2.0缺失问题 分类: LINUX 20...
查看>>
一些杂想
查看>>
js原型和原型链
查看>>
工作区和暂存区
查看>>
cf B. Fixed Points
查看>>
4步win7下简单FTP服务器搭建(试验成功)
查看>>
C#特性-表达式树
查看>>