参数的最佳实践

best practice for parameters?

本文关键字:最佳 参数      更新时间:2023-10-16

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

这仅仅是因为内存的原因吗?

如果为真,传递哪个更好,指针还是引用?

一些一般的经验法则:

如果你需要修改它,传递一个指针或引用。如果值可能为空,则传递指针,否则传递引用。

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

如果使用指针,最好使用智能指针,而不是裸指针。

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

应该使用const和reference来不复制它,同时仍然保护它的值。否则,对于像int这样较小的值使用value通常是合理的。

最好的做法是永远不要传递指针。

  1. 通过const引用传递以避免复制的成本。

  2. 如果想要修改原函数,则通过引用传递

  3. 指针不应该在RAW中传递(没有所有权语义)
    指针不应该被保存在智能指针或容器类之外。

  4. 只有当对象可能为NULL并且明确没有传递所有权(通过大量文档)时,才应该传递指针。

我希望看到一个指针的唯一时间是当我不能使用引用(即它可能是NULL),这实际上是从来没有(或包装深在一个容器方法)。

这取决于您传递的参数类型。如果参数大小合理(同样由您决定)低,那么您可能希望按值传递。

对于大尺寸的结构体/数组,通过指针或引用传递总是一个很好的做法。在此之上,如果参数不应该被修改,那么你也可以添加const .

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

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

当然,对于像int, long这样的小类型,我不需要为引用而烦恼。