下列情况必须使用member initialization list:

1. 当初始化一个reference member时;

2. 当初始化一个const member时;

3. 当调用一个base class的constructor,而它拥有一组参数时;

4. 当调用一个member class的constructor,而它拥有一组参数时。

编译器会一一操作initialization list,以适当次序在constructor之内安插初始化操作,并且在任何explicit user code之前。事实上,有一些微妙的地方要注意:list中的项目次序是由class中的members声明次序决定,不是由initialization list中的排列次序决定。