复制构造函数能够在定义一个新的对象时通过已有的对象进行实例化,在复制构造函数中可以进行数据成员的浅拷贝,也可以进行指针指向的数据的深拷贝。
在声明一个类的复制构造函数时不能使用本类型作为形参:
class A
{
public:
A(A other){}; //错误
};
如果准许这样做,那么在将实参传递给形参时,为了生成实参的副本,需要在复制构造函数调用时再临时生成一个类型,而这个类型的生成过程又会调用复制构造函数,这样就会无休止的递归调用导致栈溢出。所以C++的标准不准许复制构造函数传值参数。
解决方式:
A(const A& other)
利用引用或者指针来做形参。