#include<iostream.h>
class Class {
public:
int data;

Class(){};
Class (const Class & X)
{ data = X.data+ 5; }

void operator=(const Class &X)
{ data = X.data+ 1; }
};

int main()
{
Class A, B;
A.data=123;
B = A; /* assignment operator called in cases where the left-hand side
has already been created. Think of “B.operator=(A)” (valid C++!)
= is treated as A member function */

Class C = A;  // copy constructor called in declaration
                    // because C has not been constructed yet

cout<<"\n A.data "<< A.data;
cout<<"\n B.data "<< B.data;
cout<<"\n C.data "<< C.data;
}