一.new和delete,new[]和delete[]
在C++编程中,使用new分配的数组可用delete释放。这里释放的是动态分配的数组空间,而不是静态分配的数组空间,数组的范围可以为变量
new和delete,new[]和delete[]配对使用
int *ab=new int[length];
delete[] ab;
注意:对length的赋值语句要在new创建语句的前面
二.
派生类与继承下的构造函数与析构函数
派生类继承了基类的数据成员,所以派生类的构造函数中不仅要初始化派生类所增加的数据成员,还要 初始化基类中的数据成员。因此在执行派生类的构造函数时,应该调用基类的构造函数。具体的形式如下:
派生类构造函数名(总形式参数表列):基类构造函数名(实际参数表列){派生类中新增数据成员初始化语句}
clas1(int a,string b,char c,int d):clas(a,b,c){}
上面的调用构造函数也是在初始化参数表列中执行的。
需要注意的是基类中的数据的初始化只能在初始化表中进行,而不能再函数体中用赋值语句来初始化;而且在初始化表中进行的时候只能通过调用构造函数来进行,而不能通过赋值来初始化。
派生类构造函数的执行顺序:
1.派生类构造函数先调用基类构造函数;
2.派生类构造函数本身(即派生类构造函数的函数体)。
派生类析构函数执行顺序:
1.派生类析构函数
2.基类的析构函数
上面的顺序和执行构造函数的顺序是相反的,原理就是:对于普通类来说,先创建的对象后析构,也就是说先调用构造函数的后调用析构函数。
有子对象的派生类的构造函数:
子对象:即对象中的对象,类的成员数据是另一个类的对象
执行构造函数的顺序:
1. 基类的构造函数
2. 子对象的构造函数
3. 其他数据成员初始化
具体的格式如下:
派生类构造函数名(总形式参数表列):基类构造函数名(实际参数表列),子对象名(实际参数表列){派生类中新增数据成员初始化语句}
Cas1(int a,string b,int c,string d,int e,string f):
Clas(a,b),monitor(c,d),age(e),addr(f){}