| // default Copy
constructor where only data exist (no pointers) #include<iostream.h> #include<string.h> struct node{ int nodedata; }; class ClassName { public: int data; int array[2]; char str[20]; struct node mynode; }; int main() { ClassName a, b; a.data=1; a.array[0]=2; a.array[1]=5; strcpy(a.str,"hi"); a.mynode.nodedata=3; b = a; /* normal copy ,copies all data to object b */ cout<<" copy b = a\n"; cout << "\na data " << a.data << "\t b data " << b.data; cout << "\na array[0] " << a.array[0] << "\t b array[0] " << b.array[0]; cout << "\na array[1] " << a.array[1] << "\t b array[1] " << b.array[1]; cout << "\na str " << a.str << "\t b str " << b.str; cout << "\na mynode "<< a.mynode.nodedata<<" \t b mynode "<< b.mynode.nodedata; a.data =12; a.array[0]=15; a.array[1]=17; strcpy(a.str,"hello"); a.mynode.nodedata=18; cout<< "\n\n After changing the data of object a"; cout << "\na data " << a.data << "\t b data " << b.data; cout << "\na array[0] " << a.array[0] << "\t b array[0] " << b.array[0]; cout << "\na array[1] " << a.array[1] << "\t b array[1] " << b.array[1]; cout << "\na str " << a.str << "\t b str " << b.str; cout << "\na mynode "<< a.mynode.nodedata<<" \t b mynode "<< b.mynode.nodedata; ClassName c=a; /* normal copy ,copies all data to object c by calling the default copy constructor . OR we can use Class c(a); which also calls the default copy constructor since there is no copy constructor that you defined with prototype Class(Class) */ cout << "\n\n copy Class c=a; OR Class c(a) will give same results\n"; cout << "\na data " << a.data << "\t c data " << c.data; cout << "\na array[0] " << a.array[0] << "\t c array[0] " << c.array[0]; cout << "\na array[1] " << a.array[1] << "\t c array[1] " << c.array[1]; cout << "\na str " << a.str << "\t c str " << c.str; cout << "\na mynode "<< a.mynode.nodedata<<" \t c mynode "<< c.mynode.nodedata; a.data =7; a.array[0]=7; a.array[1]=7; strcpy(a.str,"seven"); a.mynode.nodedata=7; cout<< "\n\n After changing the data of object a"; cout << "\n\na data " << a.data << "\t c data " << c.data; cout << "\na array[0] " << a.array[0] << "\t c array[0] " << c.array[0]; cout << "\na array[1] " << a.array[1] << "\t c array[1] " << c.array[1]; cout << "\na str " << a.str << "\t c str " << c.str; cout << "\na mynode "<< a.mynode.nodedata<<" \t c mynode "<< c.mynode.nodedata; } |