C++中复制构造函数(深度复制和浅复制(简单叙述))

当用一个对象去初始化另一个对象的时候,就会去调用复制构造函数。举个例子:
Class a = Class(2,1);
Class b = a;

其中的b 对象就是调用了复制构造函数后生成的对象。

当函数按值传递给对象或者函数返回对象的时候,都会使用复制构造函数。

默认复制构造函数是逐个复制非静态成员的值,因为静态成员是独立于每个对象而存在的。这种复制称为浅复制。

例如,一个String类型对象指向一片内存,那么使用默认复制构造函数,将把这个地址赋给新值。使两个指针指向同一个对象。这样当调用析构函数,释放对象时将会出错,试图去释放以释放的内存会报错。

这时候就需要深度复制了。将去复制指向的值。而不是指针值。也就是重新去调用new操作符生成一个新的成员。

这次讲的比较少,因为下班回来后真的好累。书看进去的效率不是很高。以后会渐渐补完整。


接下来稍稍说下 重载的=操作符和复制构造函数的关系,其实,=操作符是在两个已经创建的对象之间的操作,而复制构造函数就是,这个对象原来没有,去初始化这个对象才会调用的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值