Pass by reference in constructor

I did not understand why the object to be copied has to be passed by reference inside the copy constructor?

It would be infinitely recursive if you passed it in by value. Because copy constructor will call itself to create a copy every time and this would run infinitely.