The list following the '
' after the constructor parameter list is called initializer list or initialization list. It is a comma-separated list of 'initializers', where each item defines the intialization of either a member variable of the class, or a base class of the class. In case of a member variable, the name of the variable is followed by a single argument (in brackets) that is used to construct the variable via copy-construction. In case of a base class, a variable length argument list (again, in brackets) may be passed that corresponds to any constructor definition of that base class.
Also, the order of initialization may
depend on what you put in the initializer list (but I think this does not affect member variables). I can't pinpoint the article I once downloaded about that, but IIRC the order of construction is:
1. virtual base classes
2. base classes (closest level first)
3. member variables
I'm not sure about 1. and 2. but I'm quite sure member variables in initializer lists are always initialized last, i. e. you can use data and functions from your base classes for the purpose of initializing your member variables in the initialization list.
That said, it's probably better not to do anything that depends on the order of initialization, if only to not confuse your colleagues