返回对象2(调用了拷贝构造函数)

本文详细解析了C++中拷贝构造函数的工作原理,特别是其在函数返回对象时的角色。通过分析代码,指出当GetMyString函数返回对象时,如何利用拷贝构造函数将局部对象的数据复制到返回对象中,避免资源错误。重点讨论了返回对象的创建过程以及默认拷贝构造函数可能导致的问题,并强调了自定义拷贝构造函数的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


触发拷贝构造函数原型

CMyString MyString=GetMystring()


在这里插入图片描述
在这里插入图片描述
这里比较难理解的是,地址401160~地址401164的代码,它把传进来的返回对象this指针和局部对象的首地址当做参数传入了拷贝构造函数,返回对象的this指针的意思就是:
当我们要调用一个类的成员函数时,我们必须传入this指针,意思就是告诉函数是哪一个对象调用了它,操作了它。 这里中间插入拷贝构造函数代码助于大家理解在这里插入图片描述

而传入局部对象首地址也就是把它当参数传给拷贝构造函数的形参让函数去拷贝局部对象的一系列的成员 给 传进来的返回对象(这里也就是通过真正的拷贝构造函数,判断是否是深浅拷贝这得看代码定义)

提示:假如没有定义拷贝构造函数,编译器会对原对象与拷贝对象中的各数据成员进行直接进行数据复制,称为默认拷贝构造函数,容易出现前面所提的资源释放错误

在这里插入图片描述
总结:
通过代码分析可发现,GetMyString将返回对象的地址作为函数参数。在函数返回值前,利用拷贝构造函数将函数中局部对象的数据复制到参数所指的对象中,起到了返回对象的作用。
和 返回对象1 唯一不同的就是 局部对象---->返回对象 这个步骤,其它的都一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻梦&之璐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值