Насколько я понимаю, иногда в вашем коде вы хотите, чтобы класс предлагал shared_ptr
для себя, чтобы другие части вашего кода могли получить shared_ptr для объекта вашего класса после его создания.
Проблема в том, что если ваш класс просто имеет shared_ptr<>
для себя в качестве переменной-члена, он никогда не будет автоматически уничтожен, поскольку всегда существует «одна последняя ссылка», свисающая с себя. Наследование от enable_shared_from_this
дает вашему классу автоматический метод, который не только возвращает shared_ptr
, но и содержит слабый общий указатель в качестве переменной-члена, чтобы не влиять на счетчик ссылок. Таким образом, ваш класс будет освобожден как обычно, когда последняя ссылка на него исчезнет.
Я никогда не использовал его, но это мое понимание того, как оно работает.