首页 > 代码库 > 对象中的其他小细节

对象中的其他小细节

【1】学会动态分配内存

  用前面介绍的方法定义的对象是静态的,在程序运
  行过程中,对象所占的空间是不能随时释放的。但
  有时人们希望在需要用到对象时才建立对象,在不
  需要用该对象时就撤销它,释放它所占的内存空间
  以供别的数据使用。这样可提高内存空间的利用率

Box *pt=new Box(12,15,18);这种写法是把上面两个语句(定义指针变量和用new建立新对象)合并为一个语句,并指定初值。这样height width和length更精炼。新对象中的height width lengthheight,width length分别获12,15,18

   释放内存

delete pt;

 

【2】对象的赋值和复制

  赋值:直接用 = 号

  对象之间的赋值也是通过赋值运算符“=”进行的。
  本来,赋值运算符“=”只能用来对单个的变量赋
  值,现在被扩展为两个同类对象之间的赋值,这是
  通过对赋值运算符的重载实现的。
  对象名1 = 对象名2;
注意事项:
  (1) 对象的赋值只对其中的数据成员赋值,而不对
  成员函数赋值。
  (2) 类的数据成员中不能包括动态分配的数据,否
  则在赋值时可能出现严重后果。

复制:有时需要用到多个完全相同的对象。此外,有时需
  要将对象在某一瞬时的状态保留下来。这就是对象
  的复制机制。用一个已有的对象快速地复制出多个
  完全相同的对象

Box box2(box1);其作用是用已有的对象box1box1去克隆出一个新对象box2。其一般形式为类名 对象2((对象1)

 

赋值与复制的区别

  对象的赋值是对一个已经存
  在的对象赋值,因此必须先定义被赋值的对象,才
  能进行赋值。而对象的复制则是从无到有地建立一
  个新对象,并使它与一个已有的对象完全相同(包
  括对象的结构和成员的值