c++编程习惯八(让operator=返回一个引用)

在第一次见到c语言中的字符串拷贝函数,不知道有没思考过一个问题,为什么这个函数需要返回一个char*?

当知道这个问题的答案后,就明白了原来是为了链式调用!

那么关于赋值操作,我们可以把它写成连锁形式:

int x,y,z;

x=y=z=10;//连锁形式

而且赋值采用右结合,所以上述赋值被解析为:

x=(y=(z=10));

那么为了实现这样的连锁赋值(链式调用),赋值操作符必须返回一个引用指向操作符的左实参。这是为class实现赋值操作符时应该遵循的一个规则:

public:
	Test();
	~Test();
	
Test& operator=(const Test& other)
{
	...
	return *this;//返回左侧对象
}
};

这个规则不仅适用于以上的标准赋值形式,也适用于所有赋值相关运算,例如:

public:
	Test();
	~Test();
	
Test& operator+=(const Test& other)//你也可以用于-=,*=等
{
	...
	return *this;//返回左侧对象
}
};

在编程中,我们经常会有这样的操作,需要注意的是这只是一个规则,并没有强制性,所以,你可以不使用,代码上来说是没有任何问题的。然而这个规则被所有的内置类型和标准程序库提供的类型如string,vector等共同遵守,还有在c语言中的很多函数,这样做的有点就是链式调用,所以还是应该遵守的。

 

总结:

令赋值操作符返回一个reference to *this。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值