У вас есть одна из сложных частей C ++
Вполне вероятно, что member_a имеет значение 20. Вы попадаете в то, что называется неопределенным поведением.
Когда класс сохраняет ссылку на внешний объект, программист обязан убедиться, что время жизни объекта длится дольше, чем указанный объект. В этом случае, когда вы вызываете member_a.WriteA();
, объект уже был уничтожен, и, таким образом, вы получаете доступ к памяти, которая потенциально может вам не принадлежать (в этом случае это просто происходит в месте поблизости, которое не было переопределено (полностью шанс)).
Если вы собираетесь сохранить ссылку на объект. Вы можете сохранить ссылку на const, но иногда лучше сделать параметр нормальной ссылкой, чтобы вы не могли случайно передать временное значение (это не всегда работает, так как вам может потребоваться передать объект const по ссылке).