This is a very good test to show the effect of the deep copy constructor function.
#include <iostream>
using namespace std;
class Node {
public:
int value;
Node *left;
Node *right;
Node():value(0),left(NULL),right(NULL) {
}
Node(int value) {
this->value = value;
left = NULL;
right = NULL;
}
Node(const Node &n) {
this->value = n.value;
if(n.left != NULL)
left = new Node(n.left->value);
if(n.right != NULL)
right = new Node(n.right->value);
}
};
int main() {
Node *n0 = new Node();
Node *n1 = new Node(3);
Node *pN2 = new Node(4);
pN2->left = n0;
pN2->right = n1;
Node n3(*pN2);
delete pN2;
delete n0;
delete n1;
cout << n3.left->value << endl;
return 0;
}