C++函数返回左值

形式

<类型> & 函数名(参数)

函数的返回类型决定函数调用是否返回左值,返回左值的函数可以像左值一样来使用。特别的是,我们能为返回类型是非常量引用的函数的结果赋值。

调用的返回值就是一个指向res[0]的引用

string& change(vector < string > & s, int index)
{
    
    
	return s[index];
	//假定index索引有效
}
int main()
{
    
    
	vector<string > res = {
    
    "ceshi","test"};
	change(res, 0)="sssss";
	cout << res[0] << endl;
}

这样做可以提升效率,如果用普通的函数返回常量值,会涉及到内存拷贝。因为需要讲返回值放入到特定内存中。返回引用左值则免去了将返回值放入特定内存这一步。

注意

不能返回一个局部变量的引用

例如(错误的代码)

int& f()
{
    
    
	int a;
	return a;
}

返回主调函数后局部变量会释放,这样,返回的引用就绑定了一个不存在的左值

如果非要返回一个主调中没有的变量,可以用new动态申请

但是极容易造成内存泄漏,因为我们不一定清楚函数的实现,所以可能忘记使用delete释放这个空间。

猜你喜欢

转载自blog.csdn.net/weixin_45605341/article/details/109394038