raw pointer原指针
原指针就是正常的指针:type * pointer_name = & variable_name;
智能指针
一种包括堆区原指针的对象,用来更好管理对象的生命周期。C++11
最佳实践
nullptr
Also note the use of ‘nullptr’ in C++ instead of NULL
情况使用
std::shared_ptr比std::unique_ptr更受欢迎的情况有什么例子?
一般来说,你可以在以下两种情况下使用std::shared_ptr:
*存在共享所有权(非常罕见,通常是一个所有者和许多观察者)。
*只有一个所有者,但是观察者可能会比所有者停留更久。
当我们有所有权循环(例如。不是dag的图表),我们有两个选择:
*首选:具有类似于std::vector<std::unique_ptr>的内容,每个节点存储指向其他节点的原始指针。如果很难找到所有的原始指针并在删除唯一指针时删除它们,这可能是不可能的。
*否则:使用类似std::vector<std::shared_ptr>,并且每个节点存储指向其他节点的弱指针(不要在每个节点存储共享指针——节点永远不会被删除)