巩义专业网站建设公司,ps网站专题怎么做,水泵行业网站哪个做的好,如何使网站能被百度搜到auto_ptr
设计目的#xff1a;超出作用域#xff0c;自动释放内存。所有权传递#xff1a;拷贝auto_ptr时#xff0c;原指针失效#xff0c;释放所有权#xff1b;新指针获得所有权。总而言之#xff0c;允许通过拷贝转移所有权#xff0c;独占所有权。缺陷#xff1…auto_ptr
设计目的超出作用域自动释放内存。所有权传递拷贝auto_ptr时原指针失效释放所有权新指针获得所有权。总而言之允许通过拷贝转移所有权独占所有权。缺陷这个指针使用起来容易出bug。因为这个指针拷贝以后原指针会被重置而导致失效无法继续使用如果继续使用就会导致崩溃。所以auto_ptr被淘汰了不要用它。
unique_ptr
设计目的超出作用域自动释放内存用来代替auto_ptr。所有权传递禁止拷贝只支持通过移动语义传递所有权。通过移动语义传递所有权时原指针失效释放所有权新指针获得所有权。总而言之只允许通过移动构造转移所有权不允许拷贝独占所有权。为什么不支持拷贝因为所有权传递更符合移动语义拷贝是原意是生成一个副本指针不改变原指针但是因为独占所有权所以原指针会被重置为空指针不符合拷贝的含义。需要注意的是unique_ptr可以作为函数返回值返回这是因为返回值可以支持移动语义。
scoped_ptr
设计目的超出作用域自动释放内存。所有权传递禁止拷贝不支持传递所有权只支持交换所有权。总而言之禁止所有权转移允许所有权交换。
shared_ptr
中文名强指针。设计目的引用计数减到0自动释放内存。所有权传递允许拷贝允许多个shared_ptr共享同一个动态创建的对象的所有权。缺点互相持有对方实例的shared_ptr时会导致循环引用问题导致两个shared_ptr都无法释放内存。
weak_ptr
中文名弱指针。
设计目的解决强指针循环引用问题。所有权不持有任何所有权仅进行所有权查询。但是可以转换为强指针。