CPP Object Model Member Initialization List

必需使用member initialization list的情况:

  • 初使化reference member
  • 初使化const member
  • base class的constructor有参数
  • member class的constructor有参数

在进入构造函数之前,member variable内存空间已经申请好。 在进入构造函数的user code之前,member class object就已经初使化(构造)完成。 这一步通过member initialization list(constructor有参数的object)和编译器(constructor无参的object)共同完成,顺序按照member class object的声明顺序。

这个阶段调用member function是合法的,但是不推荐。 这个阶段virtual function机制还没完成,vptr未初使化完成。