据我理解,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)。
enable_shared_from_this
才会相关。 - Kerrek SBp = make_shared<T>()
或者p = shared_ptr<T>(new T())
来创建一个共享指针。无论哪种方式,你都可以使用p->shared_from_this()
来获取另一个共享指针。 - Kerrek SB