我有一個類通過它暴露的接口增加功能:接口功能讓右值指針初始化的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