zoukankan      html  css  js  c++  java
  • C++中使用初始化列表的情况

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

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

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

         

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

          一,需要初始化的数据成员是类对象的情况(该类没有默认构造函数);
          二,需要初始化const数据成员;
          三,需要初始化引用数据成员;
     
          对于第一种情况,大家知道,对于类对象,初始化和赋值是不同的,赋值会带来了很大的性能开销。
          对于第二种以及第三种情况,从const和引用的语法上来讲,他们在使用之前必须要被初始化。
         
          另外,类中每个成员在成员初始化表中只能出现一次,初始化的顺序不是由名字在初始化表中顺序决定,而是由成员在类中被声明的顺序
    决定。但是初始化表中的成员,总是在构造函数体内成员的赋值之前被初始化。
     
     
  • 相关阅读:
    基于 OAI 部署私有的 4G EPS
    Ubuntu Snap 简述
    OAI SDR LTE 基站部署
    企业文化二三谈
    OpenStack 的 SR-IOV 虚拟机热迁移
    在 ThinkPad E470 上安装 Ubuntu 16.04 无线网卡驱动
    读写可编程 SIM/USIM 卡
    4G LTE/EPC UE 的附着与去附着
    4G EPS 的网络协议栈
    Java- 类型转换
  • 原文地址:https://www.cnblogs.com/hdu-edu/p/4003051.html
Copyright © 2011-2022 走看看