我们是不是应该在函数的参数中使用常量类型引用? [复制]
Posted
技术标签:
【中文标题】我们是不是应该在函数的参数中使用常量类型引用? [复制]【英文标题】:Should we use or not constant type reference in arguments of a function? [duplicate]我们是否应该在函数的参数中使用常量类型引用? [复制] 【发布时间】:2021-04-30 06:00:05 【问题描述】:示例 1。
void f(int a);
示例 2(常量类型引用)。
void f(const int& a);
使用第二个示例是否更好,因为我们不在函数中创建参数对象的副本?但是为什么在大多数情况下,甚至是公司,都使用第一个例子呢?我知道大对象——通过第二个例子,我们可以节省一些内存。我问的是 c++ 中的普通类型。
【问题讨论】:
我知道区别,但为什么我总是看到每个人都使用void f(int a)
大小写,即使他们不更改a
参数?
对于简单类型,创建引用比创建副本操作更繁重,所以对于double、int等一些简单类型,最好使用copy而不是const引用
根据您的函数中的内容,通过引用访问的缓存一致性可能不如按值访问。
【参考方案1】:
从技术上讲,作为函数参数传递的引用将是一个指针,它只是一些语法糖,它使引用与指针相比处理起来有点不同。
在内存方面,int
的大小在大多数常见平台上都是 32 位的。指针的大小(以及作为参数传递的引用的大小)在 64 位平台上为 64 位,在 32 位平台上为 32 位。
因此,与传递副本相比,传递对 POD 的引用甚至可能需要复制更多数据。因此,期望通过 const 引用而不是按值传递 int 并没有性能提升。而且函数签名看起来更易读?
【讨论】:
以上是关于我们是不是应该在函数的参数中使用常量类型引用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
C++中常量引用指针常量指针指针常量常量引用顶层常量与底层常量
C++中常量引用指针常量指针指针常量常量引用顶层常量与底层常量