可能重复:
Why should the copy constructor accept its parameter by reference in C++?
在维基百科中,提到 -
以下是无效的复制构造函数(Reason - copy_from_me未作为参考传递):
X (X copy_from_me);
X (const X copy_from_me);
因为对这些构造函数的调用也需要一个副本,这将导致无限递归调用。
有人可以解释一下,它会如何导致无限递归的呼叫?
感谢。
答案 0 :(得分:4)
两个拷贝构造函数都使用pass-by-value。使用pass-by-value时,必须复制参数。该副本是通过调用复制构造函数来完成的。要调用复制构造函数,我们需要传递值。这意味着我们需要复制参数,这意味着我们需要调用复制构造函数.....
答案 1 :(得分:2)
要调用按值接受对象的函数,必须创建该值的副本并将其分配给函数的堆栈。由于有问题的函数是创建该对象副本的方法,因此该函数会被自己调用以回复它被调用。