为什么拷贝构造函数必须是引用传递, 不能是值传递?

为了防止递归调用. 当一个对象以值传递的方式传入函数体时, 编译器会调用其拷贝构造函数为其生成一个副本;
若类A的拷贝构造函数的参数不是引用传递, 而是采用值传递, 那么就又需要为了创建传递给拷贝构造函数的参数的临时对象, 而又一次调用类A的拷贝构造函数, 这就是一个无限递归.