5.1 RAII 與引用計數(shù)
智能指針包括?std::shared_ptr/std::unique_ptr/std::weak_ptr,使用它們需要包含頭文件 <memory>
5.2 std::shared_ptr
std::shared_ptr?是一種智能指針,它能夠記錄多少個?shared_ptr?共同指向一個對象,從而消除顯示的調(diào)用?delete,當(dāng)引用計數(shù)變?yōu)榱愕臅r候就會將對象自動刪除。使用?std::shared_ptr?仍然需要使用?new?來調(diào)用.
std::make_shared?就能夠用來消除顯示的使用?new,所以std::make_shared?會分配創(chuàng)建傳入?yún)?shù)中的對象,并返回這個對象類型的std::shared_ptr指針
std::shared_ptr?可以通過?get()?方法來獲取原始指針,通過?reset()?來減少一個引用計數(shù),并通過get_count()來查看一個對象的引用計數(shù)。
5.3 std::unique_ptr
std::unique_ptr?是一種獨占的智能指針,它禁止其他智能指針與其共享同一個對象,從而保證代碼的安全.可以利用?std::move?將其轉(zhuǎn)移給其他的?unique_ptr
5.4 std::weak_ptr
std::weak_ptr是一種弱引用(相比較而言?std::shared_ptr?就是一種強引用)。弱引用不會引起引用計數(shù)增加