答:
前四行的拷贝构造是在这一句里调用的:
Line line(myp1, myp2); //建立Line类的对象
首先是传入两个Point作为实参,这里调用了两次Point拷贝构造,因为这里是按值传递的,如果改成按引用传就不会调用Point拷贝构造。
此时,进入line的构造函数,因为用了初始化列表,这里又调用了两次Point拷贝构造,如果在Point构造函数里用赋值操作则不会调用Point拷贝构造,而是Point默认构造函数。
到这里就完成了第一个line的构造。
第二个拷贝构造的line
Line line2(line); //利用拷贝构造函数建立一个新对象
因为初始化列表的原因调用了两次Point的拷贝构造。