unique_ptr是具有相似功能但具有改进的安全性的新工具。 auto_ptr是一个智能指针,用于管理通过新表达式获取的对象,并在auto_ptr本身被销毁时删除该对象。 当使用auto_ptr类描述一个对象时,它存储一个指向单个分配对象的指针,该对象可以确保当它超出范围时,它指向的对象必须被自动销毁。 它基于独占所有权模式,即同一...
std::auto_ptr是 C++ 标准库中提供的一种智能指针类型,用于管理动态分配的内存资源。 std::auto_ptr 的主要特点是拥有所有权语义的转移。当一个 auto_ptr 对象拥有某个内存资源时,它可以将这个所有权转移给另一个 auto_ptr 对象。这意味着当一个 auto_ptr 对象被赋值给另一个 auto_ptr 对象或者被传递给一...
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. ...
// 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 <...
shared_ptr 是为了解决auto_ptr在对象所有权上的局限性 (auto_ptr 是独占的),在使用引用计数的机制上提供了可以共享所有权的智能指针。 成员函数: use_count() 返回引用计数的个数; unique 返回是否是独占所有权(use_count 为 1) swap 交换两个 shared_ptr 对象(即交换所拥有的对象) ...
auto_ptr (C++98的方案,C++11已经抛弃)auto_ptr定义在头文件<memory>中。采用所有权模式。 auto_ptr<string> p1 (new string ("I reigned lonely as a cloud.")); auto_ptr<string> p2; p2 = p1; //auto_ptr不会报错 1. ...
shared_ptr 是为了解决 auto_ptr 在对象所有权上的局限性(auto_ptr 是独占的), 在使用引用计数的机制上提供了可以共享所有权的智能指针。 成员函数: use_count 返回引用计数的个数 unique 返回是否是独占所有权( use_count 为 1) swap 交换两个 shared_ptr 对象(即交换所拥有的对象) ...
目录 收起 std::auto_ptr的失败之处 std::unique_ptr如何成功? std::auto_ptr是C++03对智能指针的第一次尝试,作为一个失败品,其甚至已然在后续的标准中被移除,但时至今日,我们依然可以透过它一窥C++发展史的一角。 出于方便、严谨起见,下文所提及类与函数,如未特别标明命名空间,均为std或其子命名空间...
unique_ptr(const unique_ptr&) = delete; unique_ptr& operator=(const unique_ptr&) = delete; 因此,下面是语法错误,如果使用auto_ptr可以编译通过,但是ap要认为控制不可再使用,使用就异常 unique_ptr<int> ap(new int(10)); unique_ptr<int> one (ap) ; // 会出错 unique_ptr<int> two = one;...