【一天一篇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 box2(box1);
二 Box box2 = box1;【这一句不是用到赋值运算符,而是复制构造函数,和第一句相同含义,而和Box box2; box2 = box1;不同含义!】
三 void fun(Box b) 【函数参数为类的对象,而作为返回值并不会则这样】
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) 【函数参数为类的对象,而作为返回值并不会则这样】
相关文章推荐
- C++对象的动态建立和释放
- 对象的动态建立和释放
- C++对象的动态建立与释放详解(new和delete)
- 【一天一篇CPP】基类与派生类的转换(单向:从派生类赋值给基类,舍弃一部分)
- 【一天一篇CPP】对象与指针与数组 对象和const和指针和引用
- c++---对象的动态建立和释放
- C++对象的动态建立和释放
- Think_in_CPP第十三章 动态建立对象(1)
- C++语言基础 例程 对象的动态建立和释放
- C++对象的动态建立与释放详解
- C++ 对象动态建立与释放
- 对象的动态建立和释放
- 对象的动态建立和释放
- C++对象的动态建立与释放详解
- 建立一个学生结构数组来记录学生信息(学号ID,姓名和C语言成绩),要求动态建立一个结构数组,数组长度从键盘输入,自行给数组元素赋值并打印学生信息,最后不要忘记释放内存。 结构st
- 对象的动态建立和释放
- C++(20)类对象的动态建立和释放
- C++中对象的常引用、动态建立和释放相关知识讲解
- 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板
- C++对象的动态建立和释放