我有一个类通过它暴露的接口增加功能:接口功能让右值指针初始化的shared_ptr
void AddObject(Object *o);
类里面我保持set<shared_ptr<Object>>
的对象。 由于我将从接收到的指针创建shared_ptr
,我认为只将函数参数限制为右值指针,以确保用户不会删除我使用的指针。所以,我会改变函数声明:
void AddObject(Object* &&o);
这样一个典型的使用将是:
AddObject(new Object())
防止用户不小心删除指针我抱。 我不想在界面中使用shared_ptr
,因为用户不熟悉shared_ptr
。 你认为我的建议是个好主意吗?
“std :: unique_ptr”有什么问题? – AndyG
那么同样的问题适用,如果我使用unique_ptr而不是 –
我认为'unique_ptr'使它在界面中更加明显。另外,'move'语义已经与传递它们并行,所以'std :: move'一个'unique_ptr'是很自然的,但对于'std :: move'原始指针来说真的很奇怪。 – AndyG