why do we not pass objects by value to copy constructors

passing an object by value calls the copy constructor because a new copy is created -- and that would mean an infinite recursion. Also, it always faster to pass c++ class objects by reference than by value.