在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)
为了避免复制开销.
考虑以下代码,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)
这就是我想要的