我们应该在函数的参数中使用还是不使用常量类型引用?
Should we use or not constant type reference in arguments of a function?
示例 1.
void f(int a);
示例 2(常量类型引用)。
void f(const int& a);
使用第二个示例是否更好,因为我们不在函数内创建参数对象的副本?但为什么在大多数情况下,甚至公司,都使用第一个例子呢?我知道大对象——通过第二个例子我们可以节省一些内存。我问的是 C++ 中的普通类型。
从技术上讲,作为函数参数传递的引用将是一个指针,它只是一些语法糖,使得引用与指针相比处理起来有点不同。
在内存方面,int
在大多数常见平台上的大小是 32 位。指针的大小(以及作为参数传递的引用的大小)在 64 位平台上是 64 位,在 32 位平台上是 32 位。
因此,与传递副本相比,传递对 POD 的引用甚至可能涉及更多的数据复制。因此,期望通过 const 引用而不是通过值传递 int 不会带来性能提升。而且函数签名看起来可读性稍微好一点
示例 1.
void f(int a);
示例 2(常量类型引用)。
void f(const int& a);
使用第二个示例是否更好,因为我们不在函数内创建参数对象的副本?但为什么在大多数情况下,甚至公司,都使用第一个例子呢?我知道大对象——通过第二个例子我们可以节省一些内存。我问的是 C++ 中的普通类型。
从技术上讲,作为函数参数传递的引用将是一个指针,它只是一些语法糖,使得引用与指针相比处理起来有点不同。
在内存方面,int
在大多数常见平台上的大小是 32 位。指针的大小(以及作为参数传递的引用的大小)在 64 位平台上是 64 位,在 32 位平台上是 32 位。
因此,与传递副本相比,传递对 POD 的引用甚至可能涉及更多的数据复制。因此,期望通过 const 引用而不是通过值传递 int 不会带来性能提升。而且函数签名看起来可读性稍微好一点