什么是参考回报的意义?

We *_*low 16 c++

在C++中,

function() = 10;
Run Code Online (Sandbox Code Playgroud)

如果函数通过引用返回变量,则有效.

有什么用例?

小智 20

最常见的情况是实现operator []之类的东西.

struct A {
    int data[10];
    int & operator[]( int i ) {
         return data[i];
    }
};
Run Code Online (Sandbox Code Playgroud)

另一种方法是通过访问函数从类中返回一个大对象:

struct b {
    SomeBigThing big;
    const SomeBigThing & MyBig() const {
         return big;
    }
};
Run Code Online (Sandbox Code Playgroud)

为了避免复制开销.


We *_*low 7

考虑以下代码,MyFunction返回一个指向int的指针,并将值设置为int.

int  *i;
i = MyFunction();
*i = 10;
Run Code Online (Sandbox Code Playgroud)

现在缩短到

*(MyFunction()) = 10;
Run Code Online (Sandbox Code Playgroud)

它与第一个代码块完全相同.

您可以将引用视为一个始终取消引用的指针.因此,如果我的函数返回一个引用 - 而不是一个指针 - 到一个int,frist代码块就会变成

int  &i;
i = MyFunction();
i = 10;
Run Code Online (Sandbox Code Playgroud)

而第二个将成为

MyFunction() = 10;
Run Code Online (Sandbox Code Playgroud)

这就是我想要的

  • 您发布的代码不合法​​C++ - 必须初始化引用. (2认同)