下列情况必须使用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中的排列次序决定。