命名API,意味着转移内存所有权?

时间:2017-05-15 11:42:54

标签: c++11 naming-conventions smart-pointers unique-ptr api-design

我有一个数据结构。它提供了用于在其内部集合中添加或删除项目的API。在内部,结构使用std::unique_ptr来维持每个项目的生命周期。这意味着“添加”项隐式将内存的所有权转移到我的数据结构。

我在这个API的评论中清楚地记录了这一点,但我很想知道;是否有一个事实上的名称或动词我可以附加到我的API,以引起注意这个重要的副作用?

例如:AddItem(Item* item)似乎并不足以暗示所有权的转移。 RegisterItemCreateItemTransferItem似乎都意味着不同的东西。

1 个答案:

答案 0 :(得分:3)

传达所有权转移的方式是使用std::unique_ptr作为参数:

AddItem(std::unique_ptr<Item> item)