您的位置:首页 > 编程语言 > C语言/C++

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

2013-09-26 14:27 323 查看
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) 【函数参数为类的对象,而作为返回值并不会则这样】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: