有些操作对象只在程序运行时才能确定,这样编译时就无法为他们预定存储空间,只能在程序运行时,系统根据要求进行内存分配,这种方法称为动态存储分配。
所有动态存储分配都在堆区中进行。当程序运行到需要一个动态分配的变量或对象时,必须向系统申请取得堆中的一块所需大小的存贮空间,用于存贮该变量或对象。当不再使用该变量或对象时,也就是它的生命结束时,要显式释放它所占用的存贮空间,这样系统就能对该堆空间进行再次分配,做到重复使用有限的资源。
动态分配格式:IntArray.h
class IntArray
{
private :
int _size; //数组大小
int *p; //数组指针
public:
IntArray(int array_size);
IntArray(int *array,int array_size);
IntArray(IntArray &arr);//拷贝构造函数
~IntArray();
void sort(); //排序
int find(int value);//查找
int max();//最大元素
int min();//最小元素
int size();//数组大小
void display();
};
#include //io流文件引入
#include "IntArray.h"
using namespace std;
/************************************************************************/
/* 构造方法
默认数组元素初始化为0
*/
/************************************************************************/
IntArray::IntArray(int array_size)
{
_size = array_size;
p = new int[array_size];
for (int i = 0; i max) {
max = p[i];
}
}
return max;
}
/************************************************************************/
/* 计算数组最小值 */
/************************************************************************/
int IntArray::min()
{
int min = 10000;
for (int i = 0; i<_size; i++)
{
if(p[i] < min) {
min = p[i];
}
}
return min;
}
/************************************************************************/
/* 查找指定元素,返回在数组中的位置 */
/************************************************************************/
int IntArray::find(int value)
{
int index = -1;
for (int i = 0; i<_size; i++)
{
if(p[i] == value) {
index = i;
}
}
return index;
}
/************************************************************************/
/* 返回数组大小 */
/************************************************************************/
int IntArray::size()
{
return _size;
}
/************************************************************************/
/* 显示数组元素中的值 */
/************************************************************************/
void IntArray::display()
{
for (int i = 0; i<_size; i++)
{
cout<
泛型设计(generic programming)
template < class elemType >
class Array {
public:
Array( int size );
Array( elemType *array, int array_size );
virtual elemType min() ;
virtual elemType max() ;
private:
int _size;
elemType *ia;
};
以后当我们实例化 instantiate 一个特定类型的实例时如 int double 或string 类型的 Array 数组就可以在程序中直接使用这三个实例.