【发布时间】:2024-01-11 18:44:01
【问题描述】:
我在体面的教科书中阅读了相当多的关于 auto_ptr 类的内容。虽然我了解它是什么,以及它如何帮助您解决在构造函数等地方获取异常的问题,但我无法弄清楚何时有人会真正使用它。
auto_ptr 只能保存一个类型(不支持数组 new[] 初始化)。当您将其传递给函数或尝试复制它时,它会更改所有权(它不是引用计数智能指针)。
这个类的实际使用场景是什么?似乎大多数使用它的教科书示例都达到了,因为在大多数情况下甚至没有理由在堆栈变量上使用指针...
无论如何,我会停止我的咆哮 - 但如果您能为此提供一个简短的示例/描述或指向一个好的使用场景的链接,我将不胜感激。我只是想知道在实践中应该在哪里使用它,以防遇到这种情况 - 我喜欢练习我学到的东西,以便记住它。
【问题讨论】:
-
如果你有一个类管理它自己的大型动态成员,那么你最好将它包装在一个 auto_ptr 中,而不是
deleteing 析构函数中的成员。这也使得通过 const-reference 进行复制变得不可能,这是一件好事。如果类型是动态的,工厂可以通过auto_ptr返回成员。也不是完全没用! -
您的书可能使用包裹在
auto_ptr中的琐碎对象来演示用法。在实际代码中,对象可能不是那么微不足道,我不会立即打折……