C++ - 指针传递问题

2024-04-18

有人对如何通过有任何想法吗boost::shared_ptr- 按值或按引用。

在我的平台上(32位)sizeof(shared_ptr)等于 8 个字节,看起来我应该通过引用传递它们,但也许有人有其他意见/做了配置文件/类似的东西?


在 C++ 中,根据对象的大小选择是按值传递还是按引用传递通常是一个坏主意。

部分原因是编译器通常会在按值传递时执行复制省略,从而消除复制值的成本,但主要是因为这两个选项经常behave不同。

因此,请选择最能表达您需要执行的操作的选项。

With a shared_ptr,它存在的全部原因是它可以复制,以便多个对象可以共享所指向对象的所有权。如果你从未通过shared_ptr通过价值,你可以开始想知道为什么它是一个shared_ptr根本不。 Ascoped_ptr那么可能是一个更有效的解决方案。

显然,这并不是说你应该always pass shared_ptr也按价值。值传递是他们的常见用例。

如果您需要调用者和被调用者拥有共享所有权,请按值传递。如果您不希望被调用者取得任何类型的所有权,请通过引用传递。

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

C++ - 指针传递问题 的相关文章

随机推荐

  • Ruby on Rails:如何将文件呈现为纯文本(没有任何 HTML)

    如何在 Rails 中将文件渲染为纯文本 文本 不渲染任何 HTML 我试过了 render file path to file layout false and render file path to file content type
  • ascx 的视图状态在回发之间丢失

    在我的 ASP NET 应用程序中 我使用 LoadControl 动态加载 ascx 使用以下模式 var ctrl LoadControl path to control ascx ControlType ctrl SomeProper
  • 对象销毁对于加密目的可靠吗?

    作为后续这个问题 https stackoverflow com questions 57515813 我正在想象一个存储敏感数据 例如加密密钥 的类 为了简化事情 假设不涉及继承 struct Credential std array
  • awk 有条件地组合多行

    我想将多行不同长度的值合并到一行 如果它们与 ID 匹配 输入示例是 ID Value a 1 49 a 2 75 b 1 120 b 2 150 b 3 211 c 1 289 d 1 301 d 2 322 所需的输出示例是 ID Va
  • AngularJS 中的 IE11 访问被拒绝

    每个开发管道都有 2 个部分 首先努力工作并开发应用程序 其次要更加努力 让它兼容伟大的IE 我们有一个AngularJS v1 3 13 没有任何服务器端代码开发的应用程序Webstorm 我们在做REST致电服务 我们的应用程序在 Ch
  • 如何访问 json 数据中的嵌套数组

    我想访问leagueTable此数组内JSON数据 缩短的JSON看起来像这样 每个数组并不显示所有数据以保存滚动 如何访问 leagueTable 数组中的值 data fixtures fixtureId 4950418 fixture
  • 如何在linux上设置android SDK进行命令行开发?

    我正在尝试设置 android SDK 在 Linux Ubuntu 9 10 的命令行上开发一个简单的程序 我尝试过 eclipse 但它在 Ubuntu 上运行有问题 所以我放弃了 这是我到目前为止所做的 从下载 android sdk
  • TMP环境变量发生了什么?

    我总是听说在 UNIX 计算机上查找临时文件夹的正确方法是查看 TMP 环境变量 当编写适用于 Windows 和 Linux 的代码时 我会检查 TEMP 和 TMP 今天 我发现我的 Ubuntu 安装根本没有该环境变量 我知道您似乎总
  • SQL SERVER (express) 中的连接池 - 推荐数量?

    对于我使用连接池的每个应用程序 是否有建议的连接量 我的应用程序在 同一 服务器上使用 ASP NET 和 C 来对抗 sql Express 我有 5 个应用程序正在运行 它们没有被频繁使用 所有连接都打开和关闭 所以我正在考虑将每个应用
  • 如何在 JavaScript 中获取 gif 图像的持续时间

    我只尝试显示一次 gif 所以我使用这段代码来实现这一点 var ui img document getElementById ui image ui img hidden false setTimeout function ui img
  • 如何将输入类型时间的值传递给 Date 对象?

    此函数将时间转换为 12 小时格式 感谢 Stack Overflow 上此函数的贡献者 JS function ampm date var hours date getHours var minutes date getMinutes v
  • HTML Purifier 配置中的白名单表单

    我使用 HTML Purifier 来清理 CMS 中的输入 我的许多客户喜欢在他们的网站上有 PayPal 捐赠按钮 但 HTML Purifier 删除了这些表格 我注意到 HTML Purifier 有一个HTMLPurifier H
  • ExecutorService 与休闲线程 Spawner

    我有一个关于如何的基本问题ExecutorService在 Java 中工作 很难看出简单创建之间的区别Threads并行执行一些任务并将每个任务分配给ThreadPool The ExecutorService使用起来也看起来非常简单和高
  • Windows中有没有办法根据Python的需要抛出BSOD?

    我正在制作一个脚本来测试一些始终运行的软件 并且我想测试它从 BSOD 的恢复情况 有没有一种方法可以从 python 抛出蓝屏而不调用外部脚本或可执行文件 如 OSR 的 BANG 有趣的事情 Windows 内核函数可以做到这一点 我假
  • iOS ScrollView 需要对 y 位置或高度进行约束

    ViewController View ScrollView Top Bottom Leading Trailing spaces to superview set to 0 ContentView Top Bottom Leading T
  • 删除 PO 文件的所有模糊条目

    有谁知道从 PO 文件中批量删除所有模糊翻译的方法 就像是 if fuzzy TRUE 然后 SET msgstr AND REMOVE fuzzy 如果安装了 gettext 您可以使用 msgattrib 命令来完成此操作 msgatt
  • UISearchDisplayController 上出现僵尸问题

    我在使用带有 UITableView 的 UISearchDisplayController 时遇到了僵尸 UISearchDisplayController 以及视图的其余部分 是通过界面生成器 xcode 5 上的故事板并仅使用 ARC
  • 请求的 dll 执行级别

    我正在开发一个 WinForms 应用程序 Vista Win7 中有一小部分功能需要以管理员身份运行 我了解如何在清单中设置应用程序的requestedExecutionLevel 诀窍是 我不想要求用户以管理员身份运行整个应用程序 而只
  • 有没有简单的 Java REST 教程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C++ - 指针传递问题

    有人对如何通过有任何想法吗boost shared ptr 按值或按引用 在我的平台上 32位 sizeof shared ptr 等于 8 个字节 看起来我应该通过引用传递它们 但也许有人有其他意见 做了配置文件 类似的东西 在 C 中