对象中的其他小细节
【1】学会动态分配内存
用前面介绍的方法定义的对象是静态的,在程序运
行过程中,对象所占的空间是不能随时释放的。但
有时人们希望在需要用到对象时才建立对象,在不
需要用该对象时就撤销它,释放它所占的内存空间
以供别的数据使用。这样可提高内存空间的利用率
Box *pt=new Box(12,15,18); 这种写法是把上面两个语句(定义指针变量和用new 建立新对象)合并为一个语句,并指定初值。这样 height width和length更精炼。新对象中的height width length height,width length分别获 12,15,18
释放内存
delete pt;
【2】对象的赋值和复制
赋值:直接用 = 号
对象之间的赋值也是通过赋值运算符“=”进行的。
本来,赋值运算符“=”只能用来对单个的变量赋
值,现在被扩展为两个同类对象之间的赋值,这是
通过对赋值运算符的重载实现的。
对象名1 = 对象名2;
注意事项:
(1) 对象的赋值只对其中的数据成员赋值,而不对
成员函数赋值。
(2) 类的数据成员中不能包括动态分配的数据,否
则在赋值时可能出现严重后果。
复制:有时需要用到多个完全相同的对象。此外,有时需
要将对象在某一瞬时的状态保留下来。这就是对象
的复制机制。用一个已有的对象快速地复制出多个
完全相同的对象
Box box2(box1);
其作用是用已有的对象box1
box1去克隆出一个新对象box2。
其一般形式为
类名 对象2((对象1)
赋值与复制的区别
对象的赋值是对一个已经存
在的对象赋值,因此必须先定义被赋值的对象,才
能进行赋值。而对象的复制则是从无到有地建立一
个新对象,并使它与一个已有的对象完全相同(包
括对象的结构和成员的值