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

来源:互联网 发布:造价师工程师网络教育 编辑:程序博客网 时间:2024/05/29 01:52

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)  【函数参数为类的对象,而作为返回值并不会则这样】