动态数据结构能够伸缩。
伸:对新内存空间的申请和维护。
缩:回收分配的内存。
new运算符:使用该运算符获得新的内存空间,new返回分配内存的地址。分配的内存是从 堆分配的,也就是C++运行时管理的内存区域分配。说白了,就是由编译器划分一段内存出来。
//分配保存一个整数的内存空间
int * pNumber=new int;
一般来讲,最好在分配内存时初始化该内存保存的内容
int *pNumber=new int(100);
分配一个类的对象
类的构造函数不带有参数时
A* pA=new A;
类的构造函数带有参数时
A* pA=new A(10,20)
分类对象的数组
可以分配构造函数不带参数的类的对象数组,或者说没有显式的构造函数的类的对象数组
A * pAs=new A[100];
当构造函数带有参数时,若函数的参数为缺省参数(带有默认值),此时可以分配对象数组
A * pAs=new A[100]
若类有一个构造函数,该构造函数需要一个参数,则无法分配对象数组
//编译不过
A * pAs=new A[100]
没有办法可以直接初始化动态分配的数组内容,因为不能给对象的构造函数传递值和变量的值。因此,分配内存后,必须遍历数组设置其值。
int * pAs=new int[100];
for(xxx)
pAs[i]=xxx;
释放内存
对于一个变量或对象
delete pAs;
对于数组
delete [] pAs;