// unique_ptr<string> p3(p2); // 禁止左值赋值构造unique_ptr<string>p3(std::move(p1)); p1 = std::move(p2); // 使用move把左值转成右值就可以赋值了,效果和auto_ptr赋值一样cout << "p1 = p2 赋值后:" <<endl; cout << "p1:" << p1.get() << endl; // p1:0x192a0a0 cout <...
C++11新标准,用unique_ptr来代替auto_ptr原有功能。 auto_ptr <double> pd; double *p_reg = new double; pd = p_reg; // 不允许 pd = auto_ptr <double> (p_reg); //允许 auto_ptr <double> panto =p_reg; //不允许 auto_ptr <double> pauto (p_reg); //允许 1. 2. 3. 4. 5. ...
C++11新标准,用unique_ptr来代替auto_ptr原有功能,其用法介绍见第四部分unique_ptr。 1#include <iostream>2#include <memory>3#include <string>4usingnamespacestd;56voidmain(){7auto_ptr<string> country[5] =8{9auto_ptr<string>(newstring("USA")),10auto_ptr<string>(newstring("CHN")),11auto_...
C++11引入了std::unique_ptr来代替std::auto_ptr. 他们的功能类似, 都是对一个原始指针拥有互斥所有权(exclusiveownership), 其意思是不允许两个同类型的指针指向同一个资源(two pointers of the same type can’t point to the same resource at the same time). 当你和别人聊起auto_ptr和unique_ptr, 你...
unique_ptr std::unique_ptr 是在 C++ 11 中开发的,作为 std::auto_ptr 的替代品。unique_ptr 是一种具有类似功能的新工具,但具有更高的安全性(无虚假复制分配)、添加的特性(删除器)和支持对于数组。它是原始指针的容器。它明确地防止复制其包含的指针,就像在正常分配中发生的那样,即它只允许底层指针的一个...
auto_ptr是老版本的智能指针,当时还没有unique_ptr,shared_ptr,weak_ptr,现在auto_ptr已经被废弃,他有了更好用的替代品unique_ptr,相对于他的后继者,它有以下几个缺点。 1.auto_ptr可以进行赋值和拷贝运算,但是他虽然名义上做的是赋值和拷贝,但是背后做的却是move语义做的事情,拷贝和赋值之后,源对象被置位空...
unique_ptr是 C++11 标准中引入的智能指针,用于替代废弃的auto_ptr。 特点: unique_ptr同样也拥有资源的唯一所有权。当unique_ptr被赋值给另一个unique_ptr或者销毁时,会自动释放已分配的内存。 支持类似于原始指针的成员访问操作符->和*。 支持移动语义,可以转移所有权。
auto_ptr 的使用示例: #include <iostream> #include <memory> int main() { std::auto_ptr<int> p(new int(5)); std::cout << *p << std::endl; return 0; } unique_ptr unique_ptr 是 C++ 11 中引入的另一种智能指针。 unique_ptr 是一个独占所有权的智能指针,它通过提供移动语义来解决 aut...
智能指针share_ptr记录 2019-12-23 10:39 −shared_ptr 是一个共享所有权的智能指针,允许多个指针指向同一个对象。shared_ptr 对象除了包括一个对象的指针,还包括一个引用计数器。当每给对象分配一个share_ptr的时候,引用计数加一;每reset一个share_ptr, 或者修改对象的指向(指向其他对象或者赋值nullptr)... ...
C++ 标准库提供了四种智能指针:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr。 auto_ptr auto_ptr 是 C++ 98 中引入的第一种智能指针。auto_ptr 是一个独占所有权的智能指针,它允许在创建对象时指定指针类型,自动释放指针所指向的内存。auto_ptr 已经在 C++ 11 中被废弃,并在 C++17 中被移除。 auto_...