Smart Pointers
用于管理裸指针
unique_ptr
一个份动态由唯一一个unique_ptr来管理
unique_ptr是一个模板,构造的时候指明类型
当函数的周期结束的时候,这个new出来的A会自己被释放的
pa的用法和普通指针一样 pa->data;
这样去构造unique_ptr也可以
- 但是unique_ptr的管理权是唯一的——只有一个unique_ptr可以管理同一份动态内存
所以unique_ptr的所有涉及copy的语义都是禁用的(避免多个同样的管理者)
但虽然copy不行,转交管理权是可以的,所以可以将unique_ptr的管理move给别人
shared_ptr
多个shared_ptr可以共同管理同一份动态空间 底层是多个引用,然后去maintain一个reference count
- shared_ptr管理的空间的生存周期是,最后一个管理该空间的shared_ptr死去,该空间才会被释放
weak_ptr
可以偷摸去看,但是不参与管理,并且也不参与shared_ptr的管理计数
Eg:
以String举例