boost::make_shared
现在过时了吗?在 1.35 中没有找到它的定义。
最佳答案
std::make_shared
在 C++11 中也可用。请注意,make_shared
不仅仅是一个便利功能。看看下面的代码片段:
make_shared<foobar>(1, 2);
shared_ptr<foobar>(new foobar(1, 2));
两个语句都创建一个 foobar
对象并构造一个 shared_ptr
。但是,前者避免了为共享计数器分配内存,因为单个内存块将用于计数器和 foobar 对象。这对于第二个语句是不可能的,因为 foobar
的内存是在构造 shared_ptr
之前分配的。
我想说的是:不,make_shared
并没有过时,因为它提供了非常有用的优化。
关于c++ - boost::make_shared 现在过时了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1712701/