0
A
回答
5
void Foo(std::unique_ptr<T>& rT)
意味着兩兩件事:
不能調用函數是這樣的:Foo(std::unique_ptr<T>(new T));
,因爲它是一個非const左值參考。這限制了你的函數只接受左值。
如果你通過一個左值,你不知道它會發生什麼:Foo(myunique_ptr);
。在這樣的通話中,您不知道Foo
是否擁有std::unique_ptr
的所有權。如果主叫方不知道Foo
內部發生了什麼,並且從功能簽名中確定不清楚,則這可能很危險。
現在考慮到上述因素後,您可以決定是否使用不良。
+1
最後一句話+1。我必須記住這一點。好的 – 2013-03-11 04:25:44
相關問題
- 1. FooManager調用Foo.OnSthHappened()是一個糟糕的做法嗎?
- 2. 在scala中使用異常是一個糟糕的做法嗎?
- 3. 這是一個表的糟糕索引策略嗎?
- 4. 在Ruby/Rails中使用長方法名是一個糟糕的實踐嗎?
- 5. 使用Jquery Animate調整2x div寬度 - 這是一個糟糕的方法嗎?
- 6. 這是一個糟糕的設計? UITabBarController
- 7. 「getSomething()」是一種糟糕的方法命名模式嗎?
- 8. 是Erlang這個應用程序的糟糕語言嗎?
- 9. 我的代碼是草率/糟糕嗎?
- 10. 設計模式的混合是一個糟糕的實踐嗎?
- 11. 在WebControl中使用`<%=`是否是一個糟糕的主意
- 12. 引入僅用於異常拋出的方法是一個糟糕的決定嗎?
- 13. 循環來自JS-> PHP-> mySQL的值是一個糟糕的方法嗎?
- 14. 切換和一樣糟糕嗎?
- 15. 在while循環中設置狀態是一個糟糕的想法嗎?
- 16. Jquery糟糕的做法
- 17. ADO.NET - 糟糕的做法?
- 18. C2dM的糟糕的一面
- 19. 這是使用移動引用和unique_ptr的正確方法嗎?
- 20. onFragmentResult和RingtoneManager一個糟糕的浪漫
- 21. 這是unique_ptr的正確用法嗎?
- 22. 創建數據庫,用戶和使用進化分配權限是Play中的一個糟糕做法嗎?
- 23. 一個糟糕的應用可以毀掉整個iTunes Connect帳戶嗎?
- 24. 什麼是你見過的最糟糕的LINQ語法濫用?
- 25. 這是unique_ptr的濫用嗎?
- 26. 加入糟糕設計的SQL表嗎?
- 27. 蘭特()真的很糟糕嗎?
- 28. 是EAV - Hybrid是一個糟糕的數據庫設計選擇
- 29. 爲了樣式的目的,在內聯元素中使用encase javascript會是一個糟糕的做法嗎?
- 30. 糟糕的表現
檢查了這個http://stackoverflow.com/questions/9699333/passing-unique-ptr-to-functions – SRJ 2013-03-11 03:47:14
完全沒有上下文?是的,這很糟糕。唯一的指針只應該暴露給那些關心被管理對象所有權的人,這在你的代碼中很少出現。 – 2013-03-11 03:47:34
更好地解釋你實際上在做什麼,詳細地詢問你是否使用了一種好的方法。 – Nemo 2013-03-11 03:48:53