参数的最佳实践
best practice for parameters?
通常认为将参数作为指针传递比将参数作为值传递更好吗?显然,这在很大程度上取决于情况,但当有选择时,使用指针更好吗?
这仅仅是因为内存的原因吗?
如果为真,传递哪个更好,指针还是引用?
一些一般的经验法则:
如果你需要修改它,传递一个指针或引用。如果值可能为空,则传递指针,否则传递引用。
如果null值较大,则传递const指针或const引用,具体取决于null是否是合法值。
如果使用指针,最好使用智能指针,而不是裸指针。
在c++中,当按值传递时,它调用自定义类的复制构造函数。如果要传递向量或大型数据结构,这可能会非常昂贵。
应该使用const和reference来不复制它,同时仍然保护它的值。否则,对于像int这样较小的值使用value通常是合理的。
最好的做法是永远不要传递指针。
-
通过const引用传递以避免复制的成本。
-
如果想要修改原函数,则通过引用传递
-
指针不应该在RAW中传递(没有所有权语义)
指针不应该被保存在智能指针或容器类之外。 -
只有当对象可能为NULL并且明确没有传递所有权(通过大量文档)时,才应该传递指针。
我希望看到一个指针的唯一时间是当我不能使用引用(即它可能是NULL),这实际上是从来没有(或包装深在一个容器方法)。
这取决于您传递的参数类型。如果参数大小合理(同样由您决定)低,那么您可能希望按值传递。
对于大尺寸的结构体/数组,通过指针或引用传递总是一个很好的做法。在此之上,如果参数不应该被修改,那么你也可以添加const
.
我通常通过引用(可能是const)传递输入参数,通过指针传递输出参数。
这样可以立即看到哪些参数是输入参数,哪些参数是输出参数(被调用者可以修改它们的内容)。
当然,对于像int, long这样的小类型,我不需要为引用而烦恼。
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 将移出参数的最佳做法
- 生成包含给定类型的 N 个参数的可变参数列表的最佳方法?
- 使用作为参数返回的指针的最佳做法是什么
- 最佳做法是在方法中传递参数
- 将不同类型的多种参数发送到处理方法的最佳方法.C
- 将对象数组作为参数传递的最佳方法是什么
- 在函数中使用 const 引用参数访问函数中成员的最佳实践 C++.
- 第一个进程保持运行而后续进程仅传递参数的最佳 IPC 方法是什么?
- 最佳实践C :多种方法的重用默认参数
- 处理 2+ 模板参数的最佳方法
- 在C 中传递多个函数参数的最佳实践
- 将结构分为函数参数列表的最佳方法
- std::shared_ptr语言 - 将共享指针作为参数传递的最佳做法
- 将函数作为参数传递的最佳方式
- 派生类方法的默认参数的最佳实践
- 返回转发引用参数 - 最佳做法
- 具有多个特征对象作为参数的函数的最佳实践
- haarclassifiers的最佳参数