您的位置:首页 > 其它

什么时候必须写复制构造函数

2016-03-15 22:05 225 查看

什么时候必须写复制构造函数

首先,复制构造函数的调用只有在三种情况下才会进行,具体见上篇博客。
由于复制构造函数的存在,所以有可能导致:1、函数的实参不等于形参;2、函数体中return语句的返回值与函数的返回值不相等。

既然自己写复制构造函数会导致如此多的麻烦事情,为何要自己写复制构造函数喃?这就涉及深拷贝和浅拷贝的问题了。

如果一个类中含有指针成员变量,则在利用一个已存在对象构造新的对象时,就会面临两种选择:深拷贝和浅拷贝。

浅拷贝:

对象A和对象B中指针成员变量指向同一个地址,就叫浅拷贝。带来的问题是,如果delet A时,对象B中指针变量指向的地址也丢失了。如果我们使用对象B给对象A初始化时,使用默认的复制构造函数进行对象A的初始化的话,就是所谓的浅拷贝。  所以此时,我们就需要自己写复制构造函数进行对象A的初始化。

深拷贝:

对象A和对象B中指针成员变量指向不同的地址,但是两个地址对应的值是相同的。所以此时需要自己写的复制构造函数包括了对指针指向的内容拷贝。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: