C++,哪种参数样式更好,通过复制还是通过常量引用
C++, which parameter style is better, by copy or by const reference?
我想知道在我的C++库中使用什么样的风格来管理只输入的函数参数:
void f(int a)
{
// ...
}
void f(const int& a)
{
// ...
}
我知道当我想传递类或结构的参数时,应该使用第二个,但小值呢?
当您对复制成本较低的结构使用Pass-by-value时,还有一个额外的优势,即编译器可能会假设对象没有别名,即它们不是相同的对象。但是,当您使用通过引用时,编译器不能总是这样认为。
您可能想查看想要速度?传递值和如何将对象传递给C++中的函数
如果您需要修改该值,包括从中窃取,或者需要该值的快照,则对其进行复制。
在任何其他情况下,使用const&
都很好。
至于优化?先测量。
如果值很小,这是个人偏好的问题。重要的是统一您的参数样式。
相关文章:
- 为什么C++在将一个对象复制到另一个对象时需要对这两个对象进行低级常量限定
- 犰狳C++ - 从常量内存初始化只读矩阵而不复制
- 通过从构造函数中的'this'复制的指针改变常量对象
- 为什么编译器在使用"无常量复制构造函数"时抱怨?
- 为什么定义复制构造函数会给我错误:无法将类型 'obj&' 的非常量左值引用绑定到类型为"obj"的右值?
- 给定一个右值,为什么移动ctor比常量复制ctor更匹配
- C++自动生成的具有常量和非常量引用的复制构造函数
- 为什么一对常量是微不足道的可复制的,而对不是?
- 将值从指针复制到常量对象参数
- 委派复制构造函数和常量数据初始化
- 函数指针,可以采用具有常量引用或复制参数的函数
- C++复制按引用返回和按常量引用值返回
- 如何在忽略 null 的同时将数据从 char [] 复制到常量字符 *
- 为什么 GCC 拒绝复制赋值操作中的常量引用
- 将常量引用转换为智能指针而不复制
- 将字符串复制到类中的常量字符
- 你能为具有常量成员的联合编写一个复制构造函数吗?
- 为什么是非法的:将指针向量复制到指向常量的指针向量中
- 与 map 一起使用时复制构造函数常量错误
- 为什么复制常量shared_ptr和不违反常量?