深拷贝,浅拷贝,赋值操作符的技术要点总结

本文探讨了在C++中如何处理复制指针变量的问题,强调了深拷贝和浅拷贝的概念。作者通过错误的示例解释了为什么需要重载拷贝构造函数和赋值操作符,特别是对于含有指针或动态内存分配的类成员。文章指出,正确的做法是确保拷贝构造函数和赋值运算符实现深拷贝,以避免对象间的相互影响,并提醒开发者注意返回类型为引用的重要性,以提高效率并防止临时对象的创建。
摘要由CSDN通过智能技术生成

            写这篇文章的目的是因为这两天,遇到一个复制操作指针的问题(在一个列表里,存放的是指针变量,想通过右击鼠标实现复制操作),生成的新变量和源变量都是指向同一个地址,改变其中一个都会影响另一个,这样操作明显是不符合要求的。

             网上找了资料,问了网友,后来回顾一下自己的寻问过程,发现自己很傻逼,不堪回首啊,后面还是要把C++Parimer找出来看啊。左思右想,还是把这个过程写下来,是一种记录,更是一种反思。

             问题起因:

               要实现复制指针变量,复制出来的变量和源变量是独立的,互补干扰。其实就是只要源指针的成员值复制,不要源指针的地址复制。百度发现这是要用拷贝构造函数或赋值操作符。好,先把这两个函数写了:

最开始把参数和返回值写成了指针类型(想想,这不是浅拷贝吗,还是两个一样的变量),把构造函数的:A(a)写在函数体里边A::A(a)(我的A是抽象类啊,抽象类不能实例化啊。如果在函数体里直接调用,其实就是先创建一个对象,然后再调用。正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值