Deep Copy:
Overriding default copy constructor with a constructor which copies all the members including all dynamically allocated members is called deep copy constructor.
Example
#include<string.h>
#include<iostream.h>
class User
{
protected:
int user_id;
char *user_name;
public:
User()
{
user_id = 0;
user_name = new char[10];
}
~ User()
{
user_id = 0;
delete [] user_name;
}
int get_id()
{
return user_id;
}
void set_id(int id)
{
user_id = id;
}
char* get_name(void)
{
return user_name;
}
void set_name(char* name)
{
strcpy(user_name, name);
}
User(User &u)
{
user_id = u. user_id;
user_name = new char[10];
strcpy(user_name, u.user_name);
}
User & operator = (User &u)
{
user_id = u. user_id;
strcpy(user_name, u.user_name);
return *this;
}
};
void main(int argc, char *argv[])
{
User user1;
user1.set_id(1);
user1.set_name("User1");
User user2(user1);
cout << "User1 id " << user1 .get_id()
<< ", User1 name " << user1 .get_name() << endl;
cout << "User2 id " << user2 .get_id()
<< ", User2 name " <<user2 .get_name() << endl;
cout.flush();
user1.set_id(2);
user2.set_name("User2");
cout << "User1 id " << user1.get_id()
<< ", User1 name " << user1 .get_name() << endl;
cout << "User2 id " <<user2.get_id()
<< ", User2 name "<<user2 .get_name() << endl;
cout.flush();
}
About our authors: Team EQA
You have viewed 1 page out of 62. Your C++ learning is 0.00% complete. Login to check your learning progress.