Единственными гарантиями является то, что любые наблюдаемые побочные эффекты (то есть чтение и запись volatile
объектов и вызовы функций ввода / вывода) конструкции a
произойдут до того, как наблюдаемые побочные эффекты конструкцииb
, и любые побочные эффекты a
, требуемые b
, произойдут до того, как они понадобятся.
Трудно представить, почему вам понадобится более строгий порядок, чем при создании объектов volatile
гарантирует, что a
будет полностью инициализирован перед инициализацией любой части b
, хотя некоторый код из конструктора может все же произойти до того, как a
будет завершен.