拷贝构造函数定义采用的通用格式为 X::X(const X& x) { ...... } ,其中const是为了保证实参值不被改变。
拷贝构造函数采用引用方式是为了用引用对象中的成员变量值来初始化对象空间,而且在面临资源重新分配的深拷贝时候,比如对堆对象的重新分配以避免重复引用堆对象,这个时候采用引用不仅有效率上的提高,在安全性和操作性上也比值传递要更实用 。
还有一种说法是为了避免递归调用拷贝构造函数造成死循环。 当一个对象需要以值方式传递时,编译器会生成代码调用它的拷贝构造函数以生成一个复本,因此当使用拷贝构造函数时会造成死循环。