zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    vector详解
    笔记
    积木大赛
    codevs 1086 栈(Catalan数)
    不要把球传我
    同余方程 (codevs1200)
    最小集合
    数的计算
    产生数
    逃跑的拉尔夫
  • 原文地址:https://www.cnblogs.com/lovebay/p/11962854.html
Copyright © 2011-2022 走看看