复制构造函数怀疑

时间:2010-12-28 20:27:43

标签: c++

  

可能重复:
  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);

因为对这些构造函数的调用也需要一个副本,这将导致无限递归调用。

  

有人可以解释一下,它会如何导致无限递归的呼叫?

感谢。

2 个答案:

答案 0 :(得分:4)

两个拷贝构造函数都使用pass-by-value。使用pass-by-value时,必须复制参数。该副本是通过调用复制构造函数来完成的。要调用复制构造函数,我们需要传递值。这意味着我们需要复制参数,这意味着我们需要调用复制构造函数.....

答案 1 :(得分:2)

要调用按值接受对象的函数,必须创建该值的副本并将其分配给函数的堆栈。由于有问题的函数是创建该对象副本的方法,因此该函数会被自己调用以回复它被调用。