Re: Copy C'tor - doubt
Hi,
My Qn is in the statement - AB* cd(ab);
Does object 'cd' uses the same memory as object 'ab' ?
Is any memory allocated in the heap for 'cd' like 'ab' [ I do not
think, maybe I'm wrong ] ?
cd is a pointer which is copy of the ab pointer, so yes they point to the
same instance of the AB class. Your AB copy constructor is not called. No
more memory is allocated.
If you wanted to make a copy you need...
AB* ef = new AB(*ab);
With a few trace prints in your program you can easily see what is
happening. The output on my machine for the following complete program:
ab=0x6101a8, cd=0x6101a8
copy constructor: my this=0x6201c0, arg=0x6101a8
ab=0x6101a8, ef=0x6201c0
copy constructor: my this=0x22ccbc, arg=0x6101a8
ab=0x6101a8, gh=0x22ccbc
//======================
#include <stdio.h>
class AB {
int a;
public:
AB(int ar): a(ar){}
AB(const AB& arg) {
printf("copy constructor: my this=%p, arg=%p\n", this, &arg);
a = arg.a;
}
};
int main() {
AB* ab = new AB(7);
//AB* cd = new AB;
AB* cd(ab); // you have copied the pointer
printf("ab=%p, cd=%p\n",ab,cd);
AB* ef = new AB(*ab); // you have made a copy of the first AB
printf("ab=%p, ef=%p\n",ab,ef);
AB gh(*ab); // copy into local variable gh
printf("ab=%p, gh=%p\n",ab,&gh);
return 0;
}
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]