• unique_ptr


    unique_ptr

      unique_ptr 不共享它的指针。它无法复制到其他 unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法。只能移动unique_ptr这意味着,内存资源所有权将转移到另一 unique_ptr,并且原始 unique_ptr 不再拥有此资源。

      

    1、如何创建unique_ptr

    int main()
    {
        // 创建一个unique_ptr实例
        unique_ptr<int> pInt(new int(5));
        cout << *pInt;
    }

    2、无法进行复制构造和赋值操作

    int main() 
    {
        // 创建一个unique_ptr实例
        unique_ptr<int> pInt(new int(5));
        unique_ptr<int> pInt2(pInt);    // 报错
        unique_ptr<int> pInt3 = pInt;   // 报错
    }

    3、可以进行移动构造和移动赋值操作

    int main() 
    {
        unique_ptr<int> pInt(new int(5));
        unique_ptr<int> pInt2 = std::move(pInt);    // 转移所有权
        //cout << *pInt << endl; // 出错,pInt为空
        cout << *pInt2 << endl;
        unique_ptr<int> pInt3(std::move(pInt2));
    }

    4、在容器中保存指针

    int main() 
    {
        vector<unique_ptr<int>> vec;
        unique_ptr<int> p(new int(5));
        vec.push_back(std::move(p));    // 使用移动语义
    }

    参考:

    1、https://www.cnblogs.com/DswCnblog/p/5628195.html

  • 相关阅读:
    定时机制
    选择排序
    二分插入排序
    无名管道pipe
    Makefile
    Python下划线与命名规范
    Django IDE 开发环境的搭建
    Apache如何添加虚拟目录
    在Eclipse下如何安装插件
    Python的模块、包等概念的理解
  • 原文地址:https://www.cnblogs.com/tekkaman/p/10185717.html
Copyright © 2020-2023  润新知