this is nothing specific to constructors or passing parameters to functions.
it is just the application of the C++ rules for resolving a call to an overloaded function.
Func (f); // make copy of object f. f is a modifiable lvalue
// overload resolves to exact match : MyClass::MyClass( MyClass& )
const MyClass& g = f ;
Func (g); // make copy of object g. g is not a modifiable lvalue
// call MyClass::MyClass( const MyClass& ) to make the copy
}
the copy constructor that takes a non-const object as argument is used to make copies of non-const objects.
and the copy constructor that takes a const object as argument is used to make copies of const objects.
Either the thread starter or a moderator has marked this thread as solved. You can most likely trust the responses and answers given. There is most likely no reason for any further responses to be posted here. If you have a related question, please start a new thread in this forum instead.
This thread is more than three months old
No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.