a1初始化的时候a1.num为1当b初始化时,由于调用了构造函数A(A&a)这里当执行b的构造函数时会把形参a中的num赋给b.num所以当b结束构造函数后b.num是1。但是在b执行构造函数时有这么一句num=a.num++而a是a1的引用也就是说,对a的操作实际上就是对a1的操作所以再执行完这个赋值语句之后a.num++此时a.num=2所以最终打印结果为21