首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么要在C++中将智能指针作为函数参数传递?

为什么要在C++中将智能指针作为函数参数传递?
EN

Stack Overflow用户
提问于 2012-10-01 20:24:46
回答 4查看 1.2K关注 0票数 4

我对C++智能指针非常陌生,在函数参数中使用它们时,我很难理解这个建议。

"C++编码标准:101个规则、准则和最佳实践“指出,这些都是传递智能指针的原因。

更喜欢经过(智能)指针

  • 如果参数是可选的(因此调用方可以将null传递为“not available”或“not‘t”值)
  • 或者该函数存储指针的副本。
  • 或者以其他方式操纵论点的所有权。

有人能给我举个例子吗?为什么不使用智能指针在这种情况下是个坏主意?

EN

回答 4

Stack Overflow用户

发布于 2012-10-01 20:35:11

喜欢经过(智能)指针时.

我认为你误解了编码标准。您将其理解为“这是使用智能指针的原因”。作者的意图是“这些是使用某种指针的理由,它可能是一个智能指针。”

票数 7
EN

Stack Overflow用户

发布于 2012-10-01 20:35:27

更喜欢经过(智能)指针

注意括号中的“智能”是怎样的?

这个人在这里谈论的是指针和引用之间的传递。在括号中有Smart,因为在喜欢智能指针的团队中工作时,您会遵循类似的规则。

票数 4
EN

Stack Overflow用户

发布于 2012-10-01 20:38:53

我将假定,这个问题一般与指针有关,因为这就是问题中引述的案文所解释的。

要使用智能指针(或者一般的好的老式指针)有几个原因。第一个也是最明显的一点是,当您通过引用或指针传递某项时,您将指针传递到内存中的项,这意味着您得到的是实际的对象,而不是通过值传递时得到的副本。当您想要使用某种函数操作一个对象,或者只是为了减少复制时,这是非常有用的(假设始终将一个大的文本文件作为一个值发送,这肯定是效率低下的!)

接下来,将某物作为空值传递的机会。这基本上意味着参数可以以“不存在”的形式传入,而“不存在”又可以在逻辑中处理。例如,如果文件指针为null,则创建一个新文件。

特别是对于智能指针:智能指针是具有额外管理算法的指针,它可以是引用计数或其他选项。例如,您可以使用unique_pointer来确保在任何给定时间只存在一个指向对象的指针。有关更多信息,请参见维基百科pointer

如果这个问题确实与一般指针的工作有关,请参见本导言http://www.tech-recipes.com/rx/1232/c-pointers-pass-by-value-pass-by-reference/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12680526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档