nos*_*sid 27
std::make_shared也可以在C++ 11中获得.请注意,这make_shared不仅仅是一个便利功能.看一下下面的代码片段:
make_shared<foobar>(1, 2);
shared_ptr<foobar>(new foobar(1, 2));
Run Code Online (Sandbox Code Playgroud)
两个语句都创建一个foobar对象并构造一个shared_ptr.但是,前者避免了共享计数器的内存分配,因为单个内存块将用于计数器和foobar对象.对于第二个语句,这是不可能的,因为内存for foobar在shared_ptr构造之前被分配.
我想说的是:不,make_shared不是过时的,因为它提供了非常有用的优化.
Rya*_*ook 12
它在1.4文档中:http://www.boost.org/doc/libs/1_40_0/libs/smart_ptr/make_shared.html
它似乎已在1.39版本中添加