【发布时间】:2018-07-22 18:06:48
【问题描述】:
如您所见here,shared_ptr 作为指针而不是引用传递。还要注意
如果 p 是空指针,所有这些函数都会调用未定义的行为。
那么为什么是指针呢?我认为在 C++ 中,除非有特定原因使用指针,否则应该首选引用。
【问题讨论】:
-
不确定这是否有资格作为答案,但从您链接到的页面:这些函数通常使用互斥体实现,存储在全局哈希表中,其中指针值用作键..所以也许实现定义了接口。
-
也许更清楚的是,它不会从调用方一侧本地增加引用计数。这是我能想到的唯一原因。
-
@NathanOliver 在我看来,这是一个应该对用户隐藏的实现细节。
-
在 C11 中 <stdatomic.h> 包含一组名称完全相同的函数,以指针作为参数。如果 C++ 为这些函数定义了不同的接口,会不会很奇怪?
标签: c++ c++11 reference language-lawyer shared-ptr