惯用使用 std::auto_ptr 还是只使用shared_ptr?

2024-04-17

现在shared_ptr是在 tr1 中,你认为使用应该会发生什么std::auto_ptr?它们都有不同的用例,但所有用例auto_ptr可以用以下方法解决shared_ptr, 也。你会放弃吗auto_ptr或者在您想明确表示在任何给定点只有一个类拥有所有权的情况下继续使用它?

我的看法是使用auto_ptr可以通过添加代码设计的细微差别和指示来增加代码的清晰度,但另一方面,它在培训新程序员时又增加了另一个微妙的问题:他们需要了解智能指针以及它们如何使用的细节。工作。当你在任何地方只使用一个智能指针时,你可以制定一条规则“将所有指针包装在shared_ptr’然后就完成了。

您对此有何看法?


auto_ptr 在签名中也很不错。当一个函数接受一个auto_ptr<T>从价值来看,这意味着它将消耗T。如果一个函数返回一个auto_ptr<T>,很明显它放弃了所有权。这可以传达您对一生的意图。

另一方面,使用scoped_ptr<T>意味着你不想关心的生命周期T。这也意味着您可以在更多地方使用它。这两个智能指针都是有效的选择,您当然可以在一个程序中同时拥有这两个智能指针。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

惯用使用 std::auto_ptr 还是只使用shared_ptr? 的相关文章

随机推荐

  • 停止并重新启动计时器

    我想停止这个计时器 然后从停止的地方重新启动它 secondsTimer Timer scheduledTimer timeInterval 1 0 target self selector selector addSeconds user
  • 覆盖 FILE_LOG_PATTERN (如果可能的话每个环境)

    我想覆盖 Spring Boot 的默认文件和控制台日志模式以包含一些自定义 MDC 字段 有没有一种简单的方法可以使用application properties yaml 如果没有的话 这将是一个很好的功能 否则我可能不得不复制 Boo
  • 比较当前文件版本和上一个远程存储库

    如何区分我的工作文件版本与远程存储库中的某些先前版本 假设我今天拉取 对本地副本执行 6 8 次提交 然后想要查看我的最新工作版本 给定文件 与远程或任何其他版本上的最新版本之间的差异 要查看 最新工作版本 我将其作为您的工作副本 之间的差
  • 使用 sharekit 在 Facebook 上添加图像和描述

    我正在使用 sharekit 在 Facebook 上分享文本 我想在文本附近添加一张图片 如下图所示 知道如何做到这一点吗 还有其他合适的库 例如 sharekit 吗 谢谢 将 og image 元标记添加到 head html 块中
  • 如何获取使用 AngularDart 的路线?

    这是我的代码 import package angular angular dart class AppModule extends Module AppModule type AppController type LoginControl
  • Biopython无法直接访问异质残基

    我可以使用以下方法直接获取蛋白质 1n31 的残基 residue structure 0 A 100 然而 当我尝试访问异质残基时 例如 residue structure 0 A 2003 我收到错误消息 File
  • 顺序订阅可观察数组

    在这里 我用过forkJoin从 rxjs 并行订阅可观察数组 但我想一一订阅 最好的解决方案是什么 下面是我的代码 var observables Observable forkJoin observables subscribe gt
  • 从 Vaadin 8 Grid 获取列表

    Problem 我有一个 Vaadin 8 Grid 但我找不到提取其中项目的方法 描述 从网格开始 Grid
  • Clojure:避免埃拉托斯特尼筛中的堆栈溢出?

    这是我在 Clojure 中实现的埃拉托斯特尼筛法 基于 SICP 流课程 defn nats from n iterate inc n defn divide p q zero rem q p defn sieve stream lazy
  • 未找到 SDL2_image

    我正在尝试编译以下具有标题的代码 include
  • Vulkan:上传 3 通道图像到设备

    假设主机端有一个3通道图像 float或uint8 需要传输到设备图像 vkCmdCopyBufferToImage用于它 对于设备图像的格式 我看到两个选项 使用 R32G32B32A32 SFLOAT R8G8B8A8 SNORM 并将
  • 代数数据类型的特征

    我无法理解有关代数数据类型特征的规则 这是一个简化的示例 use std rc Rc use std cell RefCell trait Quack fn quack self struct Duck impl Quack for Duc
  • SQL Server 2014:相同虚拟机的不同性能(巨大的“执行次数”)

    I have 2 个相同的虚拟机 16 个 vCPU RAM 64GB 具有相同的数据库 相同的表和视图以及相同的行数 View1 有 470 万行 在 VM1 UAT 上SELECT TOP 1000 FROM View1不到 1 秒即可
  • 复选框验证码

    我正在开始我的第一次创业 我无法忍受在注册网站时尝试读取验证码 也不希望我的用户这样做 我寻找替代方案 然后我发现了复选框验证码 http uxmovement com forms captchas vs spambots why the
  • Apache Flink - 如何使用 AWS Kinesis 发送和使用 POJO

    我想使用 Flink 来使用来自 Kinesis 的 POJO 是否有关于如何正确发送和反序列化消息的标准 Thanks 我用以下方法解决了它 DataStream
  • 使用 print in 循环会减慢循环速度

    Using print in a loop slows down the loop Printing something I tried with Hello 100 times take 2 sec without it it takes
  • 如何使用两个条件查询 SQLite 数据库?

    我有一个关于员工的表 包含 3 列 如以下代码 db execSQL CREATE TABLE TABLE NAME ID INTEGER PRIMARY KEY AUTOINCREMENT DEPT TEXT NOT NULL NAME
  • git - 如何在存储库级别隐藏特定文件的更改[重复]

    这个问题在这里已经有答案了 我们在 git 中有一个文件never想要改变 该文件具有产品附带的默认值 但是 当我们在本地运行构建过程时 该文件会发生更改 因此 当人们忘记并提交该文件时 该文件自然会一直被签入 是的 我知道这很愚蠢 但很难
  • JSONArray[0] 不是 JSONObject 异常

    我正在尝试从以下 Json 字符串中提取每个 company id 的 id String test company id 4100 data drm user id 572901936637129135 direct status id
  • 惯用使用 std::auto_ptr 还是只使用shared_ptr?

    现在shared ptr是在 tr1 中 你认为使用应该会发生什么std auto ptr 它们都有不同的用例 但所有用例auto ptr可以用以下方法解决shared ptr 也 你会放弃吗auto ptr或者在您想明确表示在任何给定点只