std :: unique_XXX`命名约定的依据是什么?

问题描述 投票:1回答:1

似乎在某种程度上有一种小小的趋势来命名事物std::unique_XXXstd::unique_ptr是仅应由一个使用者处理的智能指针,因此在这种情况下“唯一”是有意义的。

但是至少有其他班级获得了unique这个绰号,但我不确定为什么。为什么叫std::unique_lock呢?相对于std::lock_guard,它不是唯一或多或少的,对吧?

我想我缺少什么。

我不记得其他班级也效仿了,但我似乎记得我们还有更多班级。也许只是std::unique_lock;我忘了。但是,如果还有其他std::unique_XXX类名称,为什么还要命名呢?

c++ terminology naming
1个回答
2
投票

锁卫在创建时被锁定,在破坏时被解锁。您无法移动或复制它,因此无法转移或共享对锁定资源的访问权限。

A std::unique_lock是可移动的(不可复制)。因此,您可以将访问权限转移到基础资源。就像您转让std::unique_ptr的所有权一样。

虽然我不能真正评论为什么选择命名方案,因为我不在那儿并且还没有阅读有关该主题的论文/讨论...两者之间的相似性至少足以让我明白说“是的,我知道他们为什么这样做了。” :)

© www.soinside.com 2019 - 2024. All rights reserved.