类使用动态内存需注意的赋值运算符使用问题

声明类时,类会自动生成默认复制运算符。原型如下:

Class_name& Class_name::operator=(const Class_name &);

1、赋值运算符何时使用:

Class_name a = b; //这种肯定调用复制构造函数,可能调用赋值运算符

具体讲解如下:
在这里插入图片描述
2、存在问题
浅复制:对于new的动态内存指针成员,只复制了指针值,未开辟空间。同默认复制构造函数相同问题。

3、解决方法
自定义赋值运算符,实现深度复制(深拷贝)。
定义重载赋值运算符需考虑内容:
在这里插入图片描述
例子:
在这里插入图片描述
注:
深度复制需要访问私有成员,可以访问的原因:
C++中本类对象作为参数,可以直接访问其私有成员:
详细解释
即,可在同一类内进行对象私有成员访问操作;封装性针对类外。

与本文同类问题:

参考资料:
C++ Primer Plus: 章节:12.1.4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值