c++:独立引用是用来做什么的

C++: what are free-standing references used for?

本文关键字:什么 独立 引用 c++      更新时间:2023-10-16

在哪种情况下,您想要定义对某些内存块的引用?

例如:

const int & r = 8; 

而不是简单地写:

int r = 8;

用较短的引用替换对象的长表达式很有用,这样可以使代码更具可读性。例如:

const int &SphereRadius = Configuration::getInstance()->sphere->radius;

当配置同时改变时(例如在另一个线程中),你的引用被更新。

您所展示的代码只是一个更大的工具的简单可能性。你的例子在很多情况下是没有意义的,因为你之前理解它。这类引用的主要目的是混叠一个对象。

  • 通过对函数的引用传递对象,并且能够修改引用对象而不会引起指针的混淆。

  • 在基于范围的循环中使用它们来修改容器中的迭代项

  • 在某些情况下用更简单的表达式缩短表达式。及更多... .

不能将非const引用绑定到右值,即不能"引用"不能出现在赋值操作符左侧的东西(如临时对象)。主要原因是,当临时变量被销毁时,最终会得到一个悬空引用,而c++不允许这样做。你的代码无法编译。

有趣的是,你可以将temp绑定到const引用,这将延长temp的生命周期,即

const Foo& ref = Foo(); // creates a temporary Foo, destructor is not invoked now

但是临时文件没有被销毁。参见const引用是否会延长临时对象的寿命?然而,我不会在我的代码中使用它,它只是我们大多数人困惑的来源。