gpt4 book ai didi

c++ - 将 auto_ptr 传递给函数可以有效地使其成为接收器。为什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:55:36 26 4
gpt4 key购买 nike

我正在阅读一些关于共享指针的笔记。他们说 STL 对 auto_ptr 的第一次尝试有以下主要缺点:

  • 不能在STL容器中使用
  • 复制 auto_ptr 转移所有权
  • 将 auto_ptr 传递给函数有效地使其成为接收器

我理解前两个,但不确定最后一个是什么意思。

谁能解释一下。

谢谢。

最佳答案

这是因为一旦将 auto_ptr 复制到一个变量中,您就失去了指向新变量的指针的所有权。

当你有:

void foo(std::auto_ptr<bar> x);

并且您使用 auto_ptr 调用 foo,您为 foo 复制了一份 auto_ptr采用。这有效地将所有权转移foo,因此指针在foo完成后被删除。

这是一个非常令人惊讶的行为,它让我最终停止使用 auto_ptr。对于 try block 内的简单 RAII(auto_ptr 的主要用例,如书中所述),请使用 boost::scoped_ptr

关于c++ - 将 auto_ptr 传递给函数可以有效地使其成为接收器。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6890656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com