Assignment operator Vs. Copy constructor
The copy constructor is for creating a new object. It copies a existing object to a newly constructed object.
The assignment operator is to deal with an already existing object.
class MyObject
{
public:MyObject(); // Default constructor
MyObject(MyObject const & a); // Copy constructor// Assignment operator
MyObject & operator = (MyObject const & a)
};
The copy constructors play an important role, as they are called when class objects are passed by value, returned by value, or thrown as an exception.
// A function declaration with an argument of type MyObject,
// passed by value, and returning a MyObjectMyObject f(MyObject x)
{
MyObject r;
...
return(r); // Copy constructor is called here
}// Calling the function :
MyObject a;
f(a); // Copy constructor called for "a"
It should be noted that the C++ syntax is ambiguous for the assignment operator.
MyObject x; x=y;
and
MyObject x=y;
have different meaning.
MyObject a; // default constructor call
MyObject b(a); // copy constructor call
MyObject bb = a; // identical to bb(a) : copy constructor call
MyObject c; // default constructor call
c = a; // assignment operator call
6 comments:
simple & very nice explanation.
well done.
Cheers man! Exactly what I was looking for.
Cool explanation.
Exact thing i was looking for ..Very well explained! thanks!
Don't you think it should be:
MyObject(const MyObject &a); // Copy constructor
// Assignment operator
MyObject & operator = (const MyObject &a)
Thanks very short and effective blog. I looked for this info in many places but only found it here.
MyObject b(a); // copy constructor call
MyObject bb = a; // identical to bb(a) : copy constructor call
one of the least documented ambiguous syntax of C++. very hard to find.
regards.
Post a Comment