У std::(boost::)shared_ptr в блоке, который хранит счетчик, есть ещё указатель на функцию удаления (deleter), который запоминается в момент создания shared_ptr
Это позволяет:
* не париться с виртуальным деструктором, если мы кастуем shared_ptr в shared_ptr (not recommended, если shared_ptr это не единственный указатель в проекте
(
Read more... )
Comments 11
(The comment has been removed)
Reply
Reply
shared_ptr pb
{
new Derived{},
[](auto rawpb)
{
delete static_cast(rawpb);
}
};
Reply
http://www.e-reading.club/chapter.php/1002058/50/Mayers_-_Effektivnoe_ispolzovanie_CPP.html
Reply
Reply
Чтобы это стало важным - нужно к двум факторам make_shared+weak_ptr ещё и третий фактор - основное потребление ресурсов собственно телом объекта, огромные массивы прямо внутри (и массивы - это char[1000], а не vector, который хранит данные отдельно).
Reply
Leave a comment