zoukankan      html  css  js  c++  java
  • weak_ptr_c++11

    unique_ptr 替代了原来的auto_ptr,指向对象具有唯一性,即同一时间只能有unique_ptr指向给定对象(和auto_ptr不同是禁止拷贝语义,
    通过移动语义替代)

    unique_ptr对象生命周期与其作用域范围保持一致,从创建直至其离开作用域

    unique_ptr 指针和其所绑定对象关系:在智能指针生命周期内,可以改变其绑定对象,可以通过reset()重新指定,可以通过release方法释放其所有权,通过移动语义来转移其所有权

    一、初始化方式
    通过new
    unique_ptr<Investment> up(new Investment());

    通过普通指针
    Investment *pInv = new Investment();
    unique_ptr<Investment> up1(pInv);

    通过make_unique
    auto pInv = make_unique<Investment>();

    通过move()函数
    unique_ptr<Investment> up1 = std::move(up);


    注意:unique_ptr不能被复制或者拷贝,下面的代码将出错:
    unique_ptr<Investment> up1(up);              //error, can not be copy
    unique_ptr<Investment> up2 = up;            //error, can not be assigned

    但是,unique_ptr可以作为函数的返回值:
    unique_ptr<Investment> GetPtr();        //function getthe unique pointer
    unique_ptr<Investment> pInv = GetPtr(); // ok


    unique_ptr 基本操作
    unique_ptr<Investment> pInvestment;     // 创建一个空的智能指针
    pInvestment.reset(new Investment());    //"绑定”动态对象
    Investment *pI = pInvestment.release(); //释放所有权
    pI= nullptr;                         //显式销毁所指对象,同时智能指针变为空指针。


    管理动态数组
    由于unique_ptr有std::unique_ptr<T[]>的重载函数,所以它可以用来管理数组资源
    unique_ptr<int[]> pArray(new int[3]{1,3,3});

  • 相关阅读:
    (转)CSS3之pointer-events(屏蔽鼠标事件)属性说明
    Linux下source命令详解
    控制台操作mysql常用命令
    解决beego中同时开启http和https时,https端口占用问题
    有关亚马逊云的使用链接收集
    favicon.ico--网站标题小图片二三事
    网络博客
    Gitbook 命令行工具
    Markdown 轻量级标记语言
    SVN 集中式版本控制系统
  • 原文地址:https://www.cnblogs.com/henryliublog/p/9055806.html
Copyright © 2011-2022 走看看