如果拷贝构造函数中的参数不是一个引用,即形如PersonInfo(const PersonInfo obj),那么就相当于使用了传值调用,而传值调用的方式会调用该类的拷贝构造函数,从而造成无穷递归地调用拷贝构造函数。
例如在main函数中有PersonInfo b = a;那么就相当于b(a),
然后调用拷贝构造函数,使得b(a)的形参 c = a,接着就相当于c(a)
然后再次调用拷贝构造函数,使得c(a)的形参 d = a,接着会发生d(a),
这样一直递归下去,直到内存耗尽,造成错误。
因此拷贝构造函数的参数必须是一个引用。
博客探讨了拷贝构造函数中参数必须为引用的原因。如果参数不是引用,会导致传值调用,进而引发无穷递归,直至耗尽内存。文章通过示例解释了这种错误情况,并强调了正确使用拷贝构造函数的重要性。
1360





