When a parameter is set by value, the compiler must first copy the object (to create an instance that will be an argument). Therefore, for your calling copy constructor, the compiler must make a copy of the object in advance.
Typically, copy constructors are defined this way:
Dummy(const Dummy& dummy) {
Thus, you do not request a separate copy of the object for the constructor, you just give a link to the existing copy (and promise not to change this copy).
Vlad
source share