据我了解make_shared<T>(...)
,可能会提供一些内存分配优化(它可能会在与 T 类实例相同的内存块内分配引用计数器)。
enable_shared_from_this 是否提供相同的优化?所以:
class T : std::enable_shared_from_this<T> {};
...
auto t = std::shared_ptr<T>(new T);
是相同的:
class T {};
...
auto t = std::make_shared<T>();
如果不考虑 sizeof(T)。