动态数组类设计
之前用C语言实现了动态数组库C语言动态数组数据类型(动态数组库),这里再用C++实现动态数组类。功能不如C语言动态数组库全,没写从头插入,根据下标插入和删除。反正要写也都差不多。有了运算符重载,根据下标访问还是方便了许多。
dynints_oop.h
#ifndef DYNINTS_H
#define DYNINTS_H
class DynInts {
private:
const int capacity;//数组最大容量
int count;//数组中实际有几个元素
int *items;//指向动态分配的数组
//bool modified;//数组是否改变,这个成员我感觉意义不大,不管了。
public:
DynInts(int _cap): capacity(_cap), count(0), items(NULL) {
}//构造函数,带一个参数,指定最大容量
DynInts(const DynInts &a); //复制构造函数
DynInts(int _cap, int *a, int n);
//带三个参数的构造函数,第一个参数指定最大容量,
//把第二个参数代表的数组(第三个参数是第二个参数数组的元素个数)复制进来,超出指定容量的话报错
DynInts & operator =(const DynInts &a); //重载赋值运算符,不改动自身最大容量,赋值过来的数组若元素个数超出则报错。
void push_back(int v);//在数组末尾添加一个元素
~DynInts() //析构
{
printf("析构函数调用\n");
if (items) delete [] items;
}
int length() {
return count; }//返回元素个数
int & operator [](int i) {
return items[i]; }//根据下标访问元素
void travel_by(void (*func)(int * data)); //遍历数组
};
#endif