c++ 关于类构造函数的初始化列表

除了性能问题之外,有些时场合初始化列表是不可或缺的,以下几种情况时必须使用初始化列表

  • 常量成员,因为常量只能初始化不能赋值,所以必须放在初始化列表里面
  • 引用类型,引用必须在定义的时候初始化,并且不能重新赋值,所以也要写在初始化列表里面
  • 没有默认构造函数的类类型,因为使用初始化列表可以不必调用默认构造函数来初始化,而是直接调用拷贝构造函数初始化

成员变量的初始化顺序

  • 成员是按照他们在类中出现的顺序进行初始化的,而不是按照他们在初始化列表出现的顺序初始化的

初始化顺序

  • 构造函数初始化列表的变量优先于构造函数(至少明显的写在前面) (若都在初始化列表中初始化,则按声明顺序初始化,与初始化列表中的顺序无关)
  • 静态成员变量先于实例变量
  • 父类成员变量先于子类成员变量
  • 父类构造函数先于子类构造函数

构造函数的两个阶段

  • 初始化阶段(初始化列表发生在初始化阶段)
  • 计算阶段

 

posted on 2013-08-12 20:43  de0319gh  阅读(170)  评论(0编辑  收藏  举报