Инициализация всегда в том порядке, в котором члены класса появляются в вашем определении класса, поэтому в вашем примере a
, затем b
.
Существует точка последовательности между инициализацией каждого члена, и вы можете передать ссылку на еще не инициализированный член в конструктор члена класса, но вы сможете использовать только это ограниченным образом (например, использование его адреса для формирования указателя), другое использование может привести к неопределенному поведению.
Уничтожение членов класса всегда происходит в обратном порядке построения.
Порядок инициализации баз и членов определен в 12.6.2 [class.base.init] /5.