复制构造函数,深层复制,常量参考
Q值。在内存管理方面。
A类的复制构造函数的形式为A(const A& a) 为什么参数通过引用传递? 解释为什么我们不能定义A(A a)
形式的构造函数答案。 我们这样做的三个原因:
这三个原因是否正确?
请告诉我。 谢谢,
答案 0 :(得分:3)
A(A a)
需要生成a
的副本,因为它是按值传递的。因此,我们需要调用复制构造函数来执行复制。但是,在这种情况下,尚未定义复制构造函数,您无法生成a
的副本,因此应该通过引用传递。
我们有格式:
A(const A& a)
请注意:常量引用实际上是对常量的引用。这意味着我们通过引用传递A
的对象,并且在制作a
的副本时我们不应该更改a
。
复制构造函数采用const引用更重要的是临时对象不能绑定到非const引用。因此,复制构造函数必须引用const对象才能复制临时对象。