Copy Constructor
Copy constructor is a special
type of parameterized constructor. As its name implies, it copies one object to
another. It is called when as object is created and equated to an existing
object at the same time. The copy constructor is called for the object being
created. The pre existing object is passed as a parameter to it. The Copy
constructor member-wise copies the object passed as a parameter to it into the
object for which it is called.
If we do not define copy
constructor for a class, the compiler creates it for us.
The following examples make these
things clear.
Case1:
Distance d1; // Distance is a class. Zero-argument
or default constructor is called.
Distance d2=d1; // Copy constructor is called.
Case2:
Distance d1; //
Distance is a class. Zero-argument or default constructor is called.
Distance d2(d1); // copy constructor is called since d1 is
passed as a parameter while creating
the object d2.
Case3:
Distance d1; // Distance is a class. d1 an object of
Distance class is created.
void abc(Distance); // It is a prototype of abc() function. It
takes distance object as a parameter.
void abc(Distance d2) // Here copy constructor is called.
{
//some function body
}
Case4:
Distance abc() // the return type of abc() function is an
object of type distance.
{
//some function body.
}
Distance d2 = abc(); // Here copy constructor is called.
EXAMPLE:
class E
{
int a;
public:
E ( );
E (int a);
void put( );
};
E::E()
{
a=0;
}
E::E(int a)
{
this -> a = a
}
void E( ) : :put( )
{
cout<<”a=”<<a<<endl;
}
void main()
{
Clrscr( );
E obj;
obj.put();
obj =E(7); //copy constructor will be called
Obj.put ( );
E,obj1=E(obj);
//explicit call to copy constructor
E.obj2(obj1);
//implicit call to copy
constructor
obj1.put();
obj2.put();
}
No comments:
Post a Comment