Стандарт C ++ явно не указывает, когда статическая память выделяется, если она доступна при первом использовании. Тем не менее, он, скорее всего, распределяется во время инициализации программы, таким образом гарантируя его присутствие, как только это потребуется, без кода специального случая для обнаружения и выполнения выделения при доступе.
Цель помещения статических данных в класс такая же, как и помещение любых других данных в классы. Поместив данные в структуру класса, вы определяете инкапсулирующее пространство имен, а также можете управлять доступом с помощью методов доступа и мутатора; это, в свою очередь, позволит вам проверять данные, поступающие в хранилище статической памяти, и обеспечивать согласованность при использовании этих данных.