2 apeapple apeapple 于 2016.09.23 21:17 提问

关于C++ 字符串类+运算符重载

当拼接一个C++串对象和一个字符串,返回值为什么不能是引用?
类中声明如下:
friend String operator +(char*, const String &);

1个回答

leewers
leewers   2016.09.23 21:44

其实倒也不是不能,就是会改变+运算符本身的语义,但重载一般的原则就是尽量不改变该操作符的语义。如果返回引用的话,这样的语句就会出现了: (a + b) = c, 而通常我们是不这样写的,+运算符本身的语义也和这样的语句是不相符合的。

leewers
leewers 回复apeapple: 大概是这个意思,只有需要做左值的时候才需要返回引用,比如重载赋值操作符
大约一年之前 回复
apeapple
apeapple 谢谢解答!是不是就是说根据运算符实际意义判断是不是做左值,来决定返回值类型?
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片