深入学习c++--智能指针
Posted douzujun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深入学习c++--智能指针相关的知识,希望对你有一定的参考价值。
1. 几种智能指针
1. auto_ptr: c++11中推荐不使用他
2. shared_ptr: 每添加一次引用 就+1,减少一次引用,就-1;做到指针进行共享
3. unique_ptr: 一个指针同时只能有一个使用者使用
4. weaked_ptr: 与shared_ptr搭配使用
1.1 shared_ptr
参考:https://zh.cppreference.com/w/cpp/memory/shared_ptr
std::shared_ptr
是通过指针保持对象共享所有权的智能指针。多个 shared_ptr
对象可占有同一对象。下列情况之一出现时销毁对象并解分配其内存:
#include <iostream> #include <memory> #include <thread> #include <chrono> #include <mutex> class Object { public: Object(int id) : m_id(id) { std::cout << "init obj " << m_id << std::endl; } ~Object() { std::cout << "bye bye " << m_id << std::endl; } int id() const { return m_id; } private: int m_id; }; typedef std::shared_ptr<Object> ObjectPtr; void interfaceOfSharedPtr() { ObjectPtr null; ObjectPtr obj(new Object(1)); std::cout << "ref count is " << obj.use_count() << std::endl; } int main() { interfaceOfSharedPtr(); return 0; }
以上是关于深入学习c++--智能指针的主要内容,如果未能解决你的问题,请参考以下文章