c++ 智慧指標作為程式設計標準的使用?
越來越多的我聽說,我應該使用智慧指標而不是裸指標,儘管我有有效的記憶體洩漏系統實現.
請問使用智慧指標的正確程式設計方法是什麼?是否應該使用它,即使我檢查分配的記憶體塊上的記憶體洩漏?還是由我決定的如果我不使用它們,這可以被認為是程式設計弱點嗎?
如果強烈推薦使用智慧指標(例如:std :: auto_ptr),我應該使用它們而不是每個裸指標嗎?
您應該使用RAII處理所有資源分配.
智慧指標只是該規則的一個常見特殊情況.
而智慧指標不僅僅是shared_ptr.有不同的所有權語義的不同智慧指標.使用適合您需要的產品. (主要的是scoped_ptr,shared_ptr,weak_ptr和auto_ptr / unique_ptr(更喜歡後者,如果可用)根據您的編譯器,它們可能在標準庫中可用,作為TR1的一部分,或者根本不在這種情況下可以通過Boost庫獲得它們.
是的,你應該絕對使用這些.它花費你什麼(如果正確地,你失去了零效能),並且它獲得了很多(記憶體和其他資源被自動釋放,你不必記得手動處理,你的程式碼使用資源獲取更短更簡潔)
請注意,並不是每個指標使用都代表某種資源所有權,因此並不是所有的原始指標使用都是錯誤的.如果你只需要指向別人所擁有的物件,那麼一個原始的指標是完全合適的.但是,如果您擁有物件,那麼您應該對其進行適當的所有權,無論是通過將類本身RAII語義,還是將其包裝在智慧指標中.
http://stackoverflow.com/questions/6142142/usage-of-smart-pointers-as-a-programming-standard