Copy by Assignment

If you do not define an assignment operator and one is required, a default assignment operator is defined. If you do not define an assignment operator and one is not required, a default assignment operator is declared but not defined. If an assignment operator that takes a single argument of a class type exists for a class, a default assignment operator is not generated.

Copy by assignment is used only in assignment.

You can define an assignment operator for a class with a single argument that is a constant reference to that class type, only if all its base classes and members have assignment operators that accept constant arguments .

For example:

class B1
{
public:
      B1& operator=(const B1&);
};
class D: public B1
{
public:
      D& operator=(const D&);
};
D& D::operator=(const D& dobj) {D dobj2 = dobj;
                                       return dobj2;}

Otherwise, you can define an assignment operator for a class with a single argument that is a reference to that class type. For example:

class Z
{
public:
      Z& operator=( Z&);
};
Z& Z::operator=(Z& zobj) {Z zobj2 = zobj;
                                        return zobj2;}

The default assignment operator for a class is a public class member. The return type is a reference to the class type it is a member of.



Overloaded Assignment
Copy by Initialization