Название "Феникс" происходит от легендарной птицы, которая погибла, загорелась и родилась заново из пепла.
В этом случае да, Синглтон может умереть, деструктор бежит, pInstance
становится nullptr
, и он ушел - пока его не нужно оживить.Когда это происходит, Create
делает pInstance
ненулевым, прежде чем new (pInstance) Singeton
воссоздает объект.
[править] Вы должны знать правила для времени жизни объекта и продолжительности хранения.Очевидно, что хранилище для объекта должно быть выделено до создания объекта, и хранилище не должно быть освобождено, пока объект не будет уничтожен.Промежуток между ними известен как продолжительность хранения .Теперь существует такая вещь, как статическая продолжительность хранения .Такое хранилище не восстанавливается до тех пор, пока программа не закроется, даже если объект в этом хранилище будет уничтожен.Переменные, определенные в области пространства имен («глобальные переменные») и переменные static
, имеют статическую продолжительность хранения.
Следовательно, хранилище для theSingleton
имеет статическую продолжительность хранения, и pInstance
может указывать на это хранилище дажеесли объект есть destroyed
.Обратите внимание, что сами переменные destroyed
и pInstance
также имеют статическую длительность хранения, поскольку являются глобальными.