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释放这个空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值