C++ 把引用作为返回值

class Object
{
private:
	int value;
public:
	Object(int x = 0) :value(x){}
	~Object(){}
	int GetValue() const{ return value; }
	void SetValue(int x){ value = x; }

	int  &Value(){ return value; }//返回的是地址,是value的引用,也就是value本身
	const int & Value() const{ return value; }
};

int main()
{
	Object obj(10);
	const Object obja(20);
	int x = obj.GetValue();
	obj.SetValue(100);
	x = obj.GetValue();

	x = obj.Value();
	obj.Value() = 200;//赋值给了函数的返回值
	//Value(&obj)=100;obj.value=100;

	obja.Value();
	return 0;
}

 

当函数返回一个引用时,则返回一个指向返回值的隐式指针。

寄存器放的value的地址。使用函数返回引用达到了两个目的:1、即可取值。2、也可赋值。

注意:不要以引用的形式返回局部变量,局部变量的生存期受到函数的影响,函数结束之后空间已经被释放,通过地址去获取值就有问题。常对象只能调用常方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值