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