我们是不是应该在函数的参数中使用常量类型引用? [复制]

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 并没有性能提升。而且函数签名看起来更易读?

【讨论】:

以上是关于我们是不是应该在函数的参数中使用常量类型引用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

excel 里出现 #value? 如何解决呢?

Excel教程 - 函数的参数

C++中常量引用指针常量指针指针常量常量引用顶层常量与底层常量

C++中常量引用指针常量指针指针常量常量引用顶层常量与底层常量

C++中常量引用指针常量指针指针常量常量引用顶层常量与底层常量

为啥复制构造函数应该在 C++ 中通过引用来接受它的参数?