std::shared_ptr

1、 所在的头文件

  #include <memory>

2、share_ptr的三种初始化方法

   a、 通过一个指向堆上申请的空间的指针初始化(切记不要用栈上的指针,否则,当智能指针全部释放控制权(栈中的对象离开作用域本身就会析构一次),将会析构对象,导致出错)
  int a = new int(100); 
  std::shared_ptr ptr(a); //我们不能写成std::shared_ptr ptr = a;这样写错误,不行你编译运行看下,编译不过

  b、通过make_shared函数得到

std::shared_ptr<int> ptr1 = std::make_shared<int>(15);

  c、 拷贝初始化

    std::shared_ptr<int> ptr2(ptr1);
    //std::shared_ptr<int> ptr2 = ptr1;这样赋值是错误的,只要是智能指针,这样直接用=赋值是有问题的必须std::shared_ptr<int> ptr2(ptr1);

3、reset函数

    当只能指针调用了reset函数的时候,就不会再指向这个对象了,所以如果还有其它智能指针指向这个对象,那么另外一个智能指针的use_count()函数结果会减1。

posted @ 2019-11-30 16:09  玥茹苟  阅读(1172)  评论(0编辑  收藏  举报