粗体显示错误

This commit is contained in:
Yi Yang 2022-03-08 14:28:58 +08:00
parent 3ba7f7123a
commit a534a8c8a1

View File

@ -14,7 +14,7 @@ std::unique_ptr<T> make_unique(Ts&&... params)
正如你看到的,`make_unique`只是将它的参数完美转发到所要创建的对象的构造函数,从`new`产生的原始指针里面构造出`std::unique_ptr`,并返回这个`std::unique_ptr`。这种形式的函数不支持数组和自定义析构(见[Item18](https://github.com/kelthuzadx/EffectiveModernCppChinese/blob/master/4.SmartPointers/item18.md)),但它给出了一个示范:只需一点努力就能写出你想要的`make_unique`函数。(要想实现一个特性完备的`make_unique`就去找提供这个的标准化文件吧然后拷贝那个实现。你想要的这个文件是N3656是Stephan T. Lavavej写于2013-04-18的文档。需要记住的是不要把它放到`std`命名空间中因为你可能并不希望看到升级C++14标准库的时候你放进`std`命名空间的内容和编译器供应商提供的`std`命名空间的内容发生冲突。
`std::make_unique`和`std::make_shared`是三个**`make`函数**中的两个:接收任意的多参数集合,完美转发到构造函数去动态分配一个对象,然后返回这个指向这个对象的指针。第三个`make`函数是`std::allocate_shared`。它行为和`std::make_shared`一样,只不过第一个参数是用来动态分配内存的*allocator*对象。
`std::make_unique`和`std::make_shared`是三个**make函数** 中的两个:接收任意的多参数集合,完美转发到构造函数去动态分配一个对象,然后返回这个指向这个对象的指针。第三个`make`函数是`std::allocate_shared`。它行为和`std::make_shared`一样,只不过第一个参数是用来动态分配内存的*allocator*对象。
即使通过用和不用`make`函数来创建智能指针的一个小小比较,也揭示了为何使用`make`函数更好的第一个原因。例如: