使用 std::auto_ptr 的意义
auto_ptr的含义是什么? 看这段代码: #include #include class A { public: ~A() { std::cout << "DEST"; }; }; void func(A* pa) { std::cout << "A…
我应该明确地将 auto_ptr 初始化为零吗?
我的一些同事喜欢在构造函数初始化列表中将 std::auto_ptr 显式初始化为 0,但在构造函数中它将被初始化为 0无需任何显式初始化。那么有什么理由这样…
将 auto_ptr 传递给函数实际上使其成为接收器。为什么?
我正在阅读一些有关共享指针的注释。 他们说 STL 使用 auto_ptr 的第一次尝试有以下主要缺点: 它们不能在 STL 容器中使用 复制 auto_ptr 转移所有权 …
C++使用 auto_ptr 引用作为输出变量是否惯用?
假设我想编写工厂方法,该方法应该在堆上分配异构对象并将它们返回给调用者。我正在考虑这样设计 API: bool MakeEm(auto_ptr& outFoo, auto_ptr& out…
提供“安全”的环境。与 auto_ptr 一起使用的 push() 函数
我想声明一个“安全”的 push() 函数,与 auto_ptr 一起使用,如下所示: template inline void push( StackType &s, auto_ptr p ) { s.push( p.get()…
删除 boost::bind 的原始指针参数
假设我已经分配了堆A*,我想将其作为参数传递给boost::bind。 boost::bind 被保存在一些 STL 中(例如 boost::functions 的容器)以便以后处理。 我想…
删除指向不完整类型和智能指针的指针
当尝试使用带有前向声明的类型的 auto_ptr 时,如下所示: class A; ... std::auto_ptr a; A 的析构函数未被调用(显然,因为 auto_ptr 内部删除底层…
为什么 std::auto_ptr 上不允许使用运算符 []
为什么 std::auto_ptr 上不允许使用运算符 []? #include using namespace std ; template void foo( T capacity ) { auto_ptr temp = new T[capacity…
使用 C++ 将指针传递给 auto_ptr
我有一个函数可以执行此操作: static MyClass* MyFunction(myparams) { return new MyClass(myparams) } 并且我可以在另一个具有以下签名的函数中调…
将shared_ptr转换为auto_ptr?
我需要在代码中从shared_ptr 获取auto_ptr。我可以进行反向操作 - 将 auto_ptr 转换为共享指针,因为共享指针具有这样的构造函数: template explicit…
像 std::vector 这样的容器中的智能指针?
我正在学习智能指针 (std::auto_ptr),只需阅读此处 和此处 智能指针 (std::auto_ptr )不应放入容器(即std::vector)中,因为即使大多数编译器也不…