【一天一篇CPP】对象的动态建立、释放、赋值和赋值

本文详细介绍了C++中对象的动态建立与释放过程,探讨了new与delete操作符的使用及注意事项。此外还讨论了对象赋值、复制构造函数的作用与应用场景,并提醒开发者注意动态分配数据成员可能引发的问题。

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

1.对象的动态建立和释放:

    Box *pt = new Box;

    delete pt;

当 new 失败,返回0,被delete忽略!new则构造,felete则析构。


new 出来的对象会对内建类型(如int等)的成员都初始化为0,而直接建立的不会!
如XX x =new XX(....);会初始化
而XX x(...);不会
而对于非内建类型成员,(如类对象成员【子对象】)则当然会调用默认构造的初始化。



2.对象的赋值: 对象名1 = 对象名2【对象1和2必须是同一个类,或对象2是对象1的派生类对象】

提示:类的数据成员不能包括动态分配的数据,否则有可能出现严重错误【除非自己去重载 = 运算符】。


3.对象的复制->复制构造函数(系统定义)

系统会自动完成类似代码:

Box::Box(const Box &b)
{
    h = b.h;
    w = b.w;
    l = b.l;
}//若用户未定义复制构造函数,则系统自动生成
被默认调用的情况:

一   Box box2(box1);

二  Box box2 = box1;【这一句不是用到赋值运算符,而是复制构造函数,和第一句相同含义,而和Box box2; box2 = box1;不同含义!】

三 void fun(Box b)  【函数参数为类的对象,而作为返回值并不会则这样】









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值