本文是Inside C++ Object Model Chapter 2 部分的读书笔记。
编译器如何处理初始化成员列表的。
下列情况中,必须要使用member initialization list进行data member 的初始化:
1) 当初始化一个reference member。
2) 当初始化一个const member。
3) 当调用一个base class 的constructor,而他拥有一组参数的时候。
4) 调用一个member class 的constructor ,而他有一组参数。
编译器会一一操作初始化列表的成员,以适当的顺序在class的constructor中插入初始化操作,并且保证它们都发生在任何explicit user code 之前。
这里总的需要留意两点:
第一个:member object的初始化,最好放到初始化列表里面。若放置于构造器中,则会产生临时的object0,初始化之,在做赋值运算给object,然后object0自行销毁,期间耗时耗力。若置于初始化列表,则编译器会在构造函数中,user code之前,调用object的构造函数,予以初始化。