Умные указатели shared_ptr
и unique_ptr
должны владеть объектом, на который они указывают, и они будут удалять его, когда он больше не нужен.
Конечно, вы всегда можете сделать:
m_pCurrentUser = std::make_shared(xDefaultUser);
ничего не сломается, указатель будет содержать копию вашего статического объекта const.Только необработанный указатель или weak_ptr
не заботится о владении.
Так что, если вы можете принять накладные расходы на копирование статического объекта const, действуйте следующим образом: вы сохраняете чистую обработку интеллектуального указателя.
Если вы не можете принять это, вам придется создать специальный класс интеллектуального указателя, который обычно ведет себя как shared_ptr
, но также не сможет уничтожить указанный объект при особых обстоятельствах. простой способ будет иметь элемент bool owner
, который должен быть проверен непосредственно перед удалением объекта указателя.Я не уверен во всем этом, поэтому мой совет: воздержитесь, если сможете