首页 > 作文

c++智能指针unique

更新时间:2023-04-04 07:29:57 阅读: 评论:0

目录
1.为什么需要unique_ptr2.最美av女神什么是unique_ptr3.unique_ptr特性4.如何使用unique_ptr4.1简单使用4.2指向数组5.unique_ptr需要注意什么

1.为什么需要unique_ptr

与shared_ptr作用类似,需要解决内存泄漏的问题,但是却不需要使用shared_ptr的引用计数,所以为了减少消耗,就需要一个这样的智能指针。但是使用已被废弃的auto_ptr的话就会有新的问题,auto_ptr在使用过程中如果被拷贝构造或者赋值的话,被复制的auto_ptr就失去了作用,这个时候就需要在auto_ptr的基础上禁用拷贝构造以及赋值操作,也就成了unique_ptr。

2.什么是unique_ptr

一个unique_ptr独享它指向的对象。也就是说,同时只有一个unique_ptr指向同一个对象,当这个unique_ptr被销毁时,指向的对象也随即被销毁。使用unique_ptr需要引入<memory.h>

3.unique_ptr特性

unique_ptr禁用了拷贝构造以及赋值操作,也就导致了下面的这些操作无法完成。

void testfunction(std::unique_ptr<test> t){    t->getstring();}void features(){    // disable copy from lvalue.    //    unique_ptr(const unique_ptr&) = delete;    //    unique_ptr& operator=(const uniq顷之ue_ptr&) = delete;    //不能进行拷贝构造以及赋值运算,也就表示不能作为函数参数传递     std::unique_ptr<test> t(new test);     std::unique_ptr<test> t2 = t; //编译报错     s机关公文写作范文td::unique_ptr<test> t3(t);//编译报错     testfunction(t);//编译报错}

4.如何使用unique_ptr

4.1简单使用

void simpleu(){    test *test = new test;    std::unique_ptr<test> t(test);     qdebug() << test  <<"获取原始指针"<< t.get() <<endl;         //    t.relea(); //释放其关联的原始指针的所有权,并返回原始指针,没有释放对象    //    t.ret();// 释放对象    t->getstring();    std::unique_ptr<test> t2 = std::move(t); //交换使用权到t2;    t2->getstring();}

4.2指向数组

和shared_ptr需要注意的地方一样,指向数组时要注意模板书写的方式,以及如何使用自定义删除器

错误写法:会导致内存泄露

void customremover(){    std::unique_ptr<test> t(new test[5]);}

正确写法:

void customremover(){    std::unique_ptr<test[]> t(new test[5]);        std::unique_ptr<test, void(*)(test *)> p2(new test[5],[](test *t){        delete []t;    });}

5.unique_ptr需要注意什么

不要多个unique_ptr指向同一个对象
例如:

void repeatpointsto(){    test *test = new test;    std::unique_ptr<test> t(test);    std::unique_ptr<test> t2(test);    //两个unique_ptrzhi'xi指向同一个对象,会导致这个对象被析构两次,导致问题出现}

会导致对象会被多次析构,导致崩溃

到此这篇关于c++智能指针unique_p法律知识学习tr的使用的文章就介绍到这了,更多相关c++智能指针unique_ptr内容请搜索www.887551.com以前的文章或继合欢树阅读理解及答案续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 07:29:56,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/2e9a7e876b57b3a786dc5b5b5a8b0ec2.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:c++智能指针unique.doc

本文 PDF 下载地址:c++智能指针unique.pdf

上一篇:什么是巡更器
下一篇:返回列表
标签:对象   指针   赋值   也就
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图