代码之家  ›  专栏  ›  技术社区  ›  chasep255

通过引用使用常量的意义是什么?C++[重复]

c++
  •  1
  • chasep255  · 技术社区  · 13 年前

    我正在读一本关于C++的书,有一个例子,他们通过引用将一个常数传递给一个函数。

    int square(const int& n)
     ...
    

    我看不出这有什么意义?如果您不打算对变量进行任何更改,为什么不按值正常传递呢。这不是通过引用传递的全部意义吗?这样你就可以更改变量的值。

    3 回复  |  直到 13 年前
        1
  •  1
  •   David Heffernan    13 年前

    这可能对int没有真正的区别。但对于较大的数据类型,传递const引用是一种性能优化。出于习惯,许多编码人员只是使用常量引用,而不是按值引用。

        2
  •  0
  •   David Schwartz    13 年前

    对于复杂类型,通过值传递比通过引用传递要昂贵得多,因为必须制作值的副本才能传递给函数。考虑将一个大向量传递给计算中值的函数。你真的想分配一个新的向量,复制中的所有值,对新向量进行平均,然后释放你分配的内存吗?通过引用传递可以保存分配/复制/释放周期。

    对于 int ,没关系。事实上,在大多数平台上,通过价值传递会更便宜。

        3
  •  0
  •   dorien    13 年前

    如果你通过引用传递它,你只传递指针,这是一个“较小”的传递对象。此外,对象不会复制到你的函数中,所以你总共使用的内存更少。