繁体   English   中英

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

[英]passing reference in C++ using const var&

我有一个类似于以下问题:

但是我仍然不明白之间的区别是什么:

void test(TestInfo&)
{

}

void test(const TestInfo&)
{

}

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

在第二种情况下,您无法在函数内部修改TestInfo的内容。
任何试图修改函数内部传递的TestInfo对象的尝试都将导致
未定义的行为

除了@Als所说的之外,第二点的意义在于,即使变量是通过引用传递的,它的功能也类似于按值传递。 如果您要传递大对象,这将很有用。 按值传递对象会在堆栈上创建一个新对象,但按引用传递不会。 当您执行const TesetInfo& ,将不会创建新变量,但实际上它将像按值传递一样起作用。 这将是稍微有效的方法。

除了无法修改传入的参数外,例如,如果TestInfo是一个类,则尝试在其上调用非const成员函数(Const成员函数是保证不修改以下内容的函数),也会导致编译错误:宾语)。

以下是有关const的一些不错的读物:

  1. const教程
  2. const正确性

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM