gpt4 book ai didi

c++ - std::auto_ptr 用法

转载 作者:太空狗 更新时间:2023-10-29 19:49:42 31 4
gpt4 key购买 nike

我已经阅读了大量关于 auto_ptr 类的不错的教科书。虽然我了解它是什么,以及它如何帮助您解决在构造函数等地方获取异常的问题,但我无法弄清楚何时有人会真正使用它。

auto_ptr 只能容纳一个类型(不支持数组 new[] 初始化)。当您将它传递给函数或尝试复制它时,它会改变所有权(它不是引用计数智能指针)。

这个类的实际使用场景是什么以及它的局限性?似乎它的大多数教科书示例都在使用,因为在大多数情况下甚至没有理由在堆栈变量上使用指针...

无论如何,我会停止咆哮 - 但如果您能为此提供一个简短的示例/描述或指向良好使用场景的链接,我将不胜感激。我只想知道在遇到这种情况时我应该在实践中在哪里使用它 - 我喜欢练习我学到的东西,所以我会记住它。

最佳答案

我会给你一个简短的例子来说明如何使用。考虑一下:

auto_ptr<SomeResource> some_function() {
auto_ptr<SomeResource> my_ptr = get_the_resource();

function_that_throws_an_exception();

return my_ptr;
}

引发异常的函数通常会导致您的指针丢失,并且指向的对象不会被删除。使用 auto_ptr 这不会发生,因为如果它没有被分配(例如使用 return),当它离开它创建的框架时它就会被销毁。

关于c++ - std::auto_ptr<T> 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7109684/

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