Smart Pointers

用于管理裸指针
notion image

unique_ptr

一个份动态由唯一一个unique_ptr来管理
unique_ptr是一个模板,构造的时候指明类型
notion image
当函数的周期结束的时候,这个new出来的A会自己被释放的
pa的用法和普通指针一样 pa->data;
notion image
这样去构造unique_ptr也可以
notion image
  • 但是unique_ptr的管理权是唯一的——只有一个unique_ptr可以管理同一份动态内存
所以unique_ptr的所有涉及copy的语义都是禁用的(避免多个同样的管理者)
notion image
但虽然copy不行,转交管理权是可以的,所以可以将unique_ptr的管理move给别人
 

shared_ptr

多个shared_ptr可以共同管理同一份动态空间 底层是多个引用,然后去maintain一个reference count
  • shared_ptr管理的空间的生存周期是,最后一个管理该空间的shared_ptr死去,该空间才会被释放
    • notion image

weak_ptr

可以偷摸去看,但是不参与管理,并且也不参与shared_ptr的管理计数
Eg:
以String举例
notion image
Loading...