I have a copy constructor that looks like this:
Qtreenode(const QtreeNode * & n) {
x=n->x;
y=n->y;
height=n->height;
width=n->width;
element=n->element;
}
I wrote this a week ago, and I looked back at it today and I was surprised by the line that when called the copy constructor with say swChild=new QtreeNode(*(n->swChild)); The arguement to the cc is a pointer by reference, right? But when I call it, I do (*(n->swChild)), which means the value of that child right? Why does my code work?
That is not a copy constructor. A copy constructor for a class is a constructor that takes a reference of the class’s type. Any of the following would be copy constructors, though the second, taking a const reference, is by far the most commonly used:
Since this isn’t a copy constructor, the implicitly declared copy constructor is still provided. It is declared as
QTreeNode(const QTreeNode& n)and basically just copies each member of the class (i.e., it’s a “shallow” copy, not a “deep” copy). It is this implicitly declared copy constructor that is used in your code.