我对C++智能指针非常陌生,在函数参数中使用它们时,我很难理解这个建议。
"C++编码标准:101个规则、准则和最佳实践“指出,这些都是传递智能指针的原因。
更喜欢经过(智能)指针
有人能给我举个例子吗?为什么不使用智能指针在这种情况下是个坏主意?
发布于 2012-10-01 20:35:11
喜欢经过(智能)指针时.
我认为你误解了编码标准。您将其理解为“这是使用智能指针的原因”。作者的意图是“这些是使用某种指针的理由,它可能是一个智能指针。”
发布于 2012-10-01 20:35:27
更喜欢经过(智能)指针
注意括号中的“智能”是怎样的?
这个人在这里谈论的是指针和引用之间的传递。在括号中有Smart,因为在喜欢智能指针的团队中工作时,您会遵循类似的规则。
发布于 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/。
https://stackoverflow.com/questions/12680526
复制相似问题