Before declaration of b1 constructing int constructing int constructing int constructing int constructing int constructing int begin construct B assign b->a2 constructing int constructing int begin construct A construct a->x constructing int: 1001 assign a->y assigning int: 0 0 end construct A copy constructing int: 0 copy constructing int: 0 begin copy construct A copy construct this->x copy constructing int: 1001 assign this->y copy constructing int: 0 destructing int: 0 destructing int: 0 end copy construct A begin ?=? A copy constructing int: 1001 destructing int: 1001 destructing int: 1001 copy constructing int: 0 destructing int: 0 destructing int: 0 copy constructing int: 0 destructing int: 0 destructing int: 0 end ?=? A copy constructing int: 0 copy constructing int: 0 begin copy construct A copy construct this->x copy constructing int: 1001 assign this->y copy constructing int: 0 destructing int: 0 destructing int: 0 end copy construct A destructing int: 0 destructing int: 0 destructing int: 1001 destructing int: 0 destructing int: 0 destructing int: 1001 construct b->a1 constructing int constructing int begin construct A construct a->x constructing int: 1000 assign a->y assigning int: 0 0 end construct A end construct B destructing int: 0 destructing int: 0 destructing int: 1001 Before declaration of b2 copy constructing int: 0 copy constructing int: 0 begin copy construct A copy construct this->x copy constructing int: 1000 assign this->y copy constructing int: 0 destructing int: 0 destructing int: 0 end copy construct A copy constructing int: 0 copy constructing int: 0 begin copy construct A copy construct this->x copy constructing int: 1001 assign this->y copy constructing int: 0 destructing int: 0 destructing int: 0 end copy construct A copy constructing int: 0 copy constructing int: 0 begin copy construct A copy construct this->x copy constructing int: 0 assign this->y copy constructing int: 0 destructing int: 0 destructing int: 0 end copy construct A End of main constructing int constructing int begin construct A construct a->x constructing int: 999 assign a->y assigning int: 0 0 end construct A copy constructing int: 0 copy constructing int: 0 begin copy construct A copy construct this->x copy constructing int: 999 assign this->y copy constructing int: 0 destructing int: 0 destructing int: 0 end copy construct A begin ?=? A copy constructing int: 999 destructing int: 999 destructing int: 999 copy constructing int: 0 destructing int: 0 destructing int: 0 copy constructing int: 0 destructing int: 0 destructing int: 0 end ?=? A copy constructing int: 0 copy constructing int: 0 begin copy construct A copy construct this->x copy constructing int: 999 assign this->y copy constructing int: 0 destructing int: 0 destructing int: 0 end copy construct A destructing int: 0 destructing int: 0 destructing int: 999 destructing int: 0 destructing int: 0 destructing int: 999 destructing int: 0 destructing int: 0 destructing int: 1000 destructing int: 0 destructing int: 0 destructing int: 999 destructing int: 0 destructing int: 0 destructing int: 0 destructing int: 0 destructing int: 0 destructing int: 999 constructing int constructing int begin construct A construct a->x constructing int: 999 assign a->y assigning int: 0 0 end construct A copy constructing int: 0 copy constructing int: 0 begin copy construct A copy construct this->x copy constructing int: 999 assign this->y copy constructing int: 0 destructing int: 0 destructing int: 0 end copy construct A begin ?=? A copy constructing int: 999 destructing int: 999 destructing int: 999 copy constructing int: 0 destructing int: 0 destructing int: 0 copy constructing int: 0 destructing int: 0 destructing int: 0 end ?=? A copy constructing int: 0 copy constructing int: 0 begin copy construct A copy construct this->x copy constructing int: 999 assign this->y copy constructing int: 0 destructing int: 0 destructing int: 0 end copy construct A destructing int: 0 destructing int: 0 destructing int: 999 destructing int: 0 destructing int: 0 destructing int: 999 destructing int: 0 destructing int: 0 destructing int: 1000 destructing int: 0 destructing int: 0 destructing int: 999 destructing int: 0 destructing int: 0 destructing int: 0 destructing int: 0 destructing int: 0 destructing int: 999