Question: while googling for how to overload operator = I found that some examples 
return value <http://www.cprogramming.com/tutorial/operator_overloading.html>  

, while a friend of mine that is C++ guru long time ago told me to return reference. Also for example when I look at the STL source I saw stuff like:

```
  vector&
  operator=(const vector& __x);

```

so what is the correct way to do it ?

BTW if you are curious my friend told me that the reason why to return ref is beause built in types return l-value.

```
int x;
(x = 3) += 2;
// x is now 5.

```

Answer: 
Yes, it should return a reference-to-self.
Its always good to use the reference as both memory and time are saved.if you pass by value new object has to be created copy constructor will have to be called.which is more expensive with respect to time as well as memory.

so pass it by reference always unless you have a very strong necessity to be passed/returned by value.