当拼接一个C++串对象和一个字符串,返回值为什么不能是引用?
类中声明如下:
friend String operator +(char*, const String &);
其实倒也不是不能,就是会改变+运算符本身的语义,但重载一般的原则就是尽量不改变该操作符的语义。如果返回引用的话,这样的语句就会出现了: (a + b) = c, 而通常我们是不这样写的,+运算符本身的语义也和这样的语句是不相符合的。
返回值只有返回的是本身才可以用引用,比如你的这个“+”重载的运算符,有两个操作数,只有返回值为左值,也就是返回的为第一个操作数的话才可以用引用,而你这个不是。