Помощник enable_shared_from_this
содержит слабый указатель, который устанавливается при создании общего указателя на объект. Это означает, что существует счетчик ссылок (выделяется отдельно или вместе с объектом с помощью make_shared
) и дополнительный weak_ptr
в объекте.
Почему же вместо этого он просто не содержит счетчик ссылок? При установке shared_ptr
из немого указателя тип должен быть полностью определен, чтобы конструктор shared_ptr
или оператор присваивания могли определить, что тип является производным от enable_shared_from_this
и использовать правильный счетчик и формат могут оставаться такими же, поэтому копирование не имеет значения. Фактически, shared_ptr
уже должен определить его, чтобы установить встроенный weak_ptr
.