传递常量引用与创建临时常量副本相同,那么为什么要传递常量引用呢?

时间:2014-01-12 06:25:57

标签: c++

我认为,通过引用传递的点是传递实际变量以节省时间或修改变量。因此 - 这将使我听起来很愚蠢 - 我曾经认为传递一个常量引用不知何故暂时将传入的变量更改为常量(如果它还没有)然后将其更改为非当函数执行完成时,-constant(除非它始终是常量)。我今天刚学习 C ++ Primer 时,传入一个常量引用会创建一个临时常量变量。也就是说,

foo(const type& obj) 

相同
foo(const type obj)

因为它们都创建了一个常量对象obj并将其设置为等于传入的任何对象。

那么通过常量引用有什么意义?无论如何,参考点是什么?它们与指针是一样的,除了它们需要被初始化并因此不太有用。

3 个答案:

答案 0 :(得分:1)

当您传递常量引用时,不会创建临时副本.....如果您传递常量参数,则会创建新副本....

您可以通过在调用者函数和被调用函数中打印变量的地址来检查这一点。

答案 1 :(得分:1)

正确的方法是使用常量引用:

foo(const type& obj)

因为这样就不会复制对象,这样更有效,特别是如果对象很大或者多次调用该函数。

答案 2 :(得分:0)

没有。常量变量创建临时变量,但常量引用可能不会。