C++中,为什么Box类的复制赋值构造函数不能写成Box(Box box);呢?为什么参数必须改为Box& box呢?

2025-04-18 18:40:29
推荐回答(5个)
回答1:

因为写成Box(Box box)的话调用拷贝构造函数的时候,形参传递给构造函数的时候会再次调用拷贝构造函数,而再次调用的拷贝构造函数形参传递给拷贝构造函数的时候会再次调用拷贝构造函数,如此下去就变成死循环了。

回答2:

可以写成(Box box)啊,写成Box&是为了引用,这样就不用构造一个临时对象,浪费内存了

回答3:

规定。这种函数不叫复制构造函数。

回答4:

规定

回答5:

规定入参必须这样