您应该仅在非常特殊的情况下考虑原始指针,例如将指针传递到DLL边界.
在shared_ptr和之间unique_ptr,我认为更喜欢后者.这使界面对用户更灵活.如果他们愿意,他们总是可以将返回的转换unique_ptr为a shared_ptr,但更重要的是,他们也可以调用unique_ptr::release然后手动管理指针(可能不是一个好主意,但它会使选项保持打开状态).
如果你的工厂需要分配为返回的定制删除unique_ptr,一个在之间的行为差异unique_ptr和shared_ptr你应该知道的是,前者将不会调用缺失者如果托管指针nullptr,但后者的意志.因此,如果您的工厂可能返回nullptr(可能是失败条件),并且有人将其转换unique_ptr为a shared_ptr,那么请确保删除器可以处理被调用nullptr作为其参数.
| 归档时间: |
|
| 查看次数: |
1059 次 |
| 最近记录: |