الحمد لله، وجدتها! سالت في موقع داني ويب، وكان هذا الرد:

You can chain together assignments, like "a = b = c;", in which case c would get assigned to b, and then b would get assigned to a, leaving a and b equal to c at the end. If an overloaded = didn't return anything, it couldn't be chained together like this.

So far as the reason for returning by reference, that means that the variable you're getting is an l-value. Basically, that means it's a non-temporary variable, you can take it's address, change it's value, etc. So if you had something like this,

كود:
class SomeClass
{
private:
   int someNum;
public:
   int& GetNum() { return someNum; }
};
You could do "someInstance.GetNum() = 5;" and that would set someInstance.someNum to 5. If it returned by value (i.e. "int GetNum() ..."), you couldn't set the value, because the thing returned by the function would be a temporary variable, and therefore it gets destroyed at the end of the line, and the semicolon.
اتضح كيف أن الـ = يمكن أن يكون مثل الـ + في حالة ما إذا كان أكثر من عملية مثال: x = y = z.