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.