0
I am not getting the concept of copy constructor in c++
how can dangling pointer affect the object?
1 Answer
+ 3
A copy constructor is used to initialize an object using an existing object of the same type.
For example :
class B{} ;
class A{
   int x,  y;
   B* pb;
public:
   A() {x=y=0; pb=new B;} 
   A(const A& a){x=a.x; y=a.y;  pb=a. pb;} 
   ~A() {delete pb;} 
} ;
A* a1 = new A();
A* a2 = new A(a1) ;
You can see that a2 is constructed using a1's members in it's copy constructor. 
But there is a fatal flaw! Both objects' pb member now points to the same instance of class B. 
As soon as you,  for example, do the following:
delete a1;
delete a2;
The deletion of a1 will delete pb in its destructor,  but now you will have a dangling pointer pb in a2,  and the call to delete a2 will now throw a null pointer exception as soon as it tries to delete pb again. 



