课后整理————复制与赋值

2020年4月15日整理

对象的动态创建和释放
定义:Box *p=new Box(1,2,3);用delete释放空间时会自动调用析构函数

对象的赋值和复制
赋值:对象1=对象2;
复制:Box box1(box2);Box box2=box1,box2=ox3;
1.赋值时对象已建立好,而复制是创建了一个对象
2.类的数据成员中包括动态分配的数据时,不能进行赋值操作
3.注意Box b2=b1;是复制而非赋值。

关于复制:
当进行对象的复制时,系统会调用复制构造函数,也叫拷贝构造函数。该函数的原型:

Box::Box(const box &b1)//注意有const,防止在此过程中改变对象的值。且其声明中有&,普通构造函数没有。必须是引用!否则报错
{
this->heigh=b1.heigh;
this->width=b1.width;
}

以上成为浅拷贝,多数情况不需要用户自行定义拷贝构造函数。但当数据成员中有指针时,此时需要在构造函数中new一个空间穿其地址该指针,当此时不自行定义拷贝构造函数,则拷贝得来的对象和原对象中的指针数据成员将指向同一个空间,此时动用析构函数来释放空间时就会出错。故需要自行定义一个拷贝构造函数,在构造函数中new一个空间后,将原对象中指针的值赋给它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值