新标准的推出(某些编译器中已有部分功能),新类型std::unique_ptr被认为是替代std::auto_ptr的一种选择。 它们的使用是否完全重叠(因此我可以在代码中进行全局搜索/替换(尽管我不会这样做,但如果我这样做了呢)),或者我应该注意一些从文档中无法看出的差异? 另外,如果它...
我听说C++11中auto_ptr已被弃用,这是什么原因? 另外,我想知道auto_ptr和shared_ptr的区别。
auto_ptr 在即将到来的 C++ 标准中是否会被弃用? 在所有权转移方面,是应该使用 unique_ptr 而非 shared_ptr 吗? 如果 unique_ptr 不在标准中,那么我需要使用 shared_ptr 吗?
我对unique_ptr和右值移动语义感到困惑。 假设我们有两个集合:std::vector<std::auto_ptr<int>> autoCollection; std::vector<std::unique_ptr<int>> uniqu...
相较于使用原始指针所采用的一些高级技术(但不仅限于此),每种智能指针的等效用法是什么? 我的理解很少,但从我所了解到的: 原始指针:只有在您确实非常非常非常非常地知道自己在做什么并已经在接口后小心隐藏了用法时才使用。 std::auto_ptr:已过时,不要使用。 std::unique...
这个标题基本概括了我的问题。为什么不能使用以下方法来检查空指针?auto_ptr<char> p( some_expression ); // ... if ( !p ) // error 必须执行以下操作:if ( !p.get() ) // OK 为什么auto_ptr<...
当尝试使用一个被前向声明声明的类型来使用auto_ptr时,像这样:class A; ... std::auto_ptr<A> a; A的析构函数没有被调用(显然是因为auto_ptr内部删除了底层指针,而不完全类型的析构函数无法被调用)。 然而,当使用std::shared_p...
我正在学习智能指针(std::auto_ptr)并在这里以及这里读到,智能指针(std::auto_ptr)不应该放在容器中(即std::vector),因为大多数编译器不会报错,这看起来可能是正确的。没有规则规定智能指针不会在内部被复制(例如由vector类)并转移所有权,然后指针将变为NU...
我们已经几乎在所有代码中都使用boost::shared_ptr,但是我们仍然有一些孤立的情况,在其中我们使用std::auto_ptr,包括单例类:template < typename TYPE > class SharedSingleton { public: st...