You are on page 1of 2

#include<iostream> #include<string.

h> using namespace std; class DeepCopy { private: char* name; public: DeepCopy(char* tempname) { cout<<endl<<endl<<"DeepCopy param ctor called"<<endl; int length = strlen(tempname); name = new char(length); strncpy(name, tempname, length); } DeepCopy(const DeepCopy& tempObject) { cout<<"DeepCopy copy ctor called"<<endl; int length = strlen(tempObject.name); if(tempObject.name) { name = new char(length); strncpy(name, tempObject.name, length); } else { name = 0; } } void display() { cout<<"Name : "<<name<<endl; } ~DeepCopy() { cout<<"DeepCopy dtor called"<<endl; delete name; name = 0; } }; int main() { DeepCopy object_1("Smith"); cout<<"Calling DeepCopy display for object_1"<<endl; object_1.display(); { cout<<endl<<"Creating a new object_2 form an existing object"\\\ \\<<endl; DeepCopy object_2(object_1); cout<<"Calling DeepCopy display for object_2"<<endl; object_2.display(); }//object_2 dtor called

cout<<endl<<"Calling DeepCopy display again for object_1"<<endl; object_1.display(); return 0; }

You might also like