C++ 将参数传递给函数时的最佳实践

pai*_*342 1 c++ oop arguments reference constants

所以我读过很多关于人们说 const & 总是好的事情,因为它消除了复制,而按值传递是一个坏主意。然后我最近还读到一些文章说 const & 对于基本数据类型 int、string 等来说是不好的。

那么,有谁知道向函数传递参数时要遵循的“最佳实践”或最有效的方法,无论是简单的数据类型(如 int、双字符串)还是更复杂的类型(如现代 C++ 的向量、对象和指针)?

谢谢。

Man*_*oor 5

有关最佳实践,请查找C++ 核心指南

一些一般提示:

  1. 对于大对象,请传递const&(或者&如果您需要可变性),这是因为复制对象将比复制指向对象的指针更昂贵。(请注意,右值对象将绑定到const&,您可以提供&&重载)
  2. 对于较小的(内置类型),通过引用传递没有多大意义,因为对象大小可能与指针具有相同的顺序。
  3. 首选对指针的引用,以避免需要进行nullptr检查

如果您正在编写模板代码,请查找完美转发。如果您使用 STL 容器,则有像std::span和 之类的代理对象std::string_view,它们提供容器的通用视图,并且可以按值传递。