Я не знаю, что точно они хотели этим показать. Этот пример неполный или к нему, вероятно, были какие-то комментарии. Главное, что в нём непонятно, так это откуда и как вызывается assertSanity? И почему вы связали свои рассуждения с конструктором?
Но прямо в таком виде, как здесь написано, такое может быть только в одном случае: на SMP-архитектурах с разделёнными контроллерами памяти или кешами.. тогда может такое быть, что если n слева берётся на одном процессоре, а потому происходит переключение на другой процессор и n справа берётся на другом.. и тогда значения могут не совпасть из-за рассинхронизации памяти. Но эта ситуация по идее тоже маловероятно.. по идее ОС должна при переключении синхронизовать кэши, чтобы недопустить такого краха.
Другой вариант может иметься в виду, что в то время как мы вызываем этот метод, кто-то может изменить снаружи n и тогда проверка не сойдётся, но в этом примере не предусмотрено способа изменения n ниоткуда. Стало быть, пример в любом случае неполный и выдран откуда-то из контекста.
Про конструктор: тут вы не совсем правы: во время выполнения конструктора объект уже существует.. вы можете легко в этом убедиться передав указатель this куда-нибудь.. и вы обнаружите, что снаружи этот объект будет выглядеть вполне существующим.