参数的最佳实践?

时间:2011-10-13 13:31:19

标签: c++ coding-style

通常认为将参数作为指针而不是作为值传递时更好吗?显然它在很大程度上取决于情况,但是当有选择时,使用指针会更好吗?

这仅仅是出于记忆的原因吗?

如果它是真的,指针或引用,最好通过什么?

5 个答案:

答案 0 :(得分:6)

一些一般的经验法则:

如果需要修改它,请传递指针或引用。如果值可能为null,则传递指针,否则传递引用。

如果它很大,则传递一个const指针或const引用,具体取决于null是否为合法值。

如果使用指针,则更喜欢指向裸指针的智能指针。

否则,按值传递。

答案 1 :(得分:1)

在C ++中,当您通过值传递时,它会调用自定义类的复制构造函数。如果您传递矢量或大型数据结构,这可能非常昂贵。

您应该使用const和reference来不复制它并仍然保护该值。否则,对像int这样的小东西使用值通常是合理的。

答案 2 :(得分:0)

最好永远传递指针。

  1. 通过const引用以避免复制费用。

  2. 如果您希望该功能修改原件,请按引用传递。

  3. 否则按值传递。

  4. 指针永远不应该在RAW中传递(没有所有权语义)
    指针永远不应放在智能指针或容器类之外。

  5. 只有当对象可能为NULL并且显式未传递所有权时(通过大量文档),如果您传递了指针,那么这只是。

  6. 我期望看到指针的唯一一次是当我无法使用引用时(即它可能为NULL)并且实际上从不(或在容器方法内部深处)。

答案 3 :(得分:0)

这取决于您传递的参数类型。如果参数大小合理地(再次由你决定)为低,那么你可能想要传递值。

对于大尺寸结构/数组,通过pointer or reference总是一个好习惯。除此之外,如果参数不应该是可修改的,那么您也可以添加const

答案 4 :(得分:0)

我通常通过引用(可能是const 1)传递输入参数,并通过输出参数的指针传递。

这样可以立即看到哪些参数是输入参数,哪些参数是输出参数(被调用者修改其内容)。

当然,形成像int,long等小类型我不打扰引用。