mirror of
https://github.com/CnTransGroup/EffectiveModernCppChinese.git
synced 2025-01-28 04:40:30 +08:00
typo fix
This commit is contained in:
parent
b857bef0f8
commit
4ecd7cff3d
@ -150,7 +150,7 @@ private:
|
||||
`std::shared_ptr`不能处理的另一个东西是数组。和`std::unique_ptr`不同的是,`std::shared_ptr`的API设计之初就是针对单个对象的,没有办法`std::shared_ptr<T[]>`。一次又一次,“聪明”的程序员踌躇于是否该使用`std::shared_ptr<T>`指向数组,然后传入自定义数组销毁器。(即`delete []`)。这可以通过编译,但是是一个糟糕的注意。一方面,`std::shared_ptr`没有提供`operator[]`重载,所以数组索引操作需要借助怪异的指针算术。另一方面,`std::shared_ptr`支持转换为指向基类的指针,这对于单个对象来说有效,但是当用于数组类型时相当于在类型系统上开洞。(出于这个原因,`std::unique_ptr`禁止这种转换。)。更重要的是,C++11已经提供了很多内置数组的候选方案(比如`std::array`,`std::vector`,`std::string`)。声明一个指向傻瓜数组的智能指针几乎总是标识着糟糕的设计。
|
||||
|
||||
**记住**:
|
||||
+ `std::shared_ptr`为任意共享所有权的资源一种自动垃圾回收的便捷方式。
|
||||
+ `std::shared_ptr`为任意共享所有权的资源提供一种自动垃圾回收的便捷方式。
|
||||
+ 较之于`std::unique_ptr`,`std::shared_ptr`对象通常大两倍,控制块会产生开销,需要原子引用计数修改操作。
|
||||
+ 默认资源销毁是通过**delete**,但是也支持自定义销毁器。销毁器的类型是什么对于`std::shared_ptr`的类型没有影响。
|
||||
+ 避免从原始指针变量上创建`std::shared_ptr`。
|
||||
+ 避免从原始指针变量上创建`std::shared_ptr`。
|
||||
|
Loading…
Reference in New Issue
Block a user