拷贝构造函数&&深浅拷贝

为什么拷贝构造函数必须为引用传递,不能是值传递
简单的回答bai是为了防止递归引用。du
具体一些zhi可以这么讲:
当 一个dao对象需要zhuan以值方式传递时,编译shu器会生成代码调用它的拷贝构造函数以生成一个复本。如果类A的拷贝构造函数是以值方式传递一个类A对象作为参数的话,当 需要调用类A的拷贝构造函数时,需要以值方式传进一个A的对象作为实参;
而以值方式传递需要调用类A的拷贝构造函数;结果就是调用类A的拷贝构造函数导 致又一次调用类A的拷贝构造函数,这就是一个无限递归。

编译器默认的拷贝构造做的浅拷贝,可能会带来堆区内存重复释放。

posted @ 2021-02-03 14:31  Chenyi_li  阅读(80)  评论(0)    收藏  举报