使用 const var& 在 C++ 中传递引用

passing reference in C++ using const var&

本文关键字:引用 C++ const var 使用      更新时间:2023-10-16

我有一个类似的问题:这个问题

但我仍然不明白之间的区别

void test(TestInfo&)
{
}

void test(const TestInfo&)
{
}

第一个传递引用,而第二个传递函数test()const引用,
注意,const引用基本上是指对const数据的引用。

在第二种情况下,不能在函数内修改TestInfo的内容
任何在函数内修改传递的TestInfo对象的尝试都会导致
未定义的行为

除了@Als所说的,第二个的意义在于,即使变量是通过引用传递的,它的功能也类似于通过值传递。如果您正在传递一个大对象,这将非常有用。通过值传递对象会在堆栈上创建一个新对象,但通过引用传递不会。当您执行const TesetInfo&时,将不会创建新变量,但它的功能基本上就像通过值传递一样。这将是一种稍微有效的方法。

除了不能修改传入的参数外,例如,如果TestInfo是一个类,如果您尝试在它上调用非常数成员函数,则会出现编译错误(const成员函数是承诺不修改对象的函数)。

以下是一些关于const:的好消息

  1. Const教程
  2. 构造正确性