如果使用引用的目的是更改原始变量的值,为啥要使用 const 引用传递? [C++] [重复]
Posted
技术标签:
【中文标题】如果使用引用的目的是更改原始变量的值,为啥要使用 const 引用传递? [C++] [重复]【英文标题】:Why use pass by const reference if the point of using reference is to change original variable's value? [C++] [duplicate]如果使用引用的目的是更改原始变量的值,为什么要使用 const 引用传递? [C++] [重复] 【发布时间】:2014-12-13 23:17:11 【问题描述】:C++:
例如,如果我们想更改实际变量的值,则使用“按引用传递”。
那么“通过 const 引用”有什么用呢?它说它不允许我们改变变量的值。
好的。那么为什么不首先使用“按值传递”呢? :/“按值传递”也不会改变变量的值。它会改变临时副本的值。
那么为什么要使用 CONST 参考呢? o_O?我希望你能得到我。
请帮我解开疑惑。
【问题讨论】:
如果按值传递,则必须调用复制构造函数。对于像 int 这样的东西,它真的很简单,但是像数千字节的字符串这样的东西复制起来相当繁重,而如果你传入引用,从技术上讲,你只需要以更好的语法传入指向该内存的指针 【参考方案1】:我假设你的意思是为什么这样做
int foo(int const& bar)
而不是
int foo (int bar)
如果这是您的问题,则使用引用传递,这样就不需要制作副本。在上面的例子中,它是微不足道的,因为参数是int
。但如果它是一个大的vector
或map
,你肯定不想按值传递,因为它会复制。
因此,如果您只想通过引用传递以避免复制,但不希望变量可变,则可以将其设为 const
引用。
【讨论】:
"你当然不想按值传递,因为它会复制。"但有时你需要一份副本。 嗨。非常感谢您这么快回复。我还有一个问题。编辑:我想我明白了。我今天太糊涂了。在创建此主题之前,我也阅读了其他类似的问题。以上是关于如果使用引用的目的是更改原始变量的值,为啥要使用 const 引用传递? [C++] [重复]的主要内容,如果未能解决你的问题,请参考以下文章