I understand that when we define a class copy constructor of the class is necessary as Rule of three states. I also notice that the argument of the copy constructor is usual
In addition to the fundamental assumption that copy constructors should not modify the source instance, this article elaborates on the actual technical reason for using const:
http://www.geeksforgeeks.org/copy-constructor-argument-const/
Namely that and I quote:
"... compiler created temporary objects cannot be bound to non-const references ..."