以可变长整型数组为例,使之可以实现功能:无需指定数组大小并将指定整数赋值到可变长数组中、赋值数组中任意下标元素、类似“a1=a”两个数组之间数值相等且a2和a分别指向两个数组
要实现以上功能,需要做到以下几点:
1、要用动态分配的内存来存放数组元素
2、要重载“=”和“[ ]”
3、要使用复制构造函数
代码伺候~~
class carray
{
int *ptr;//指向数组的指针
int size;//数组的长度
public:
carray(int s=0);//构造函数
carray(carray & a);//复制构造函数
~carray();
void push_back(int v);//在数组中加入新元素
carray &operator=(const carray &a);//数组对象间的赋值
int length() { return size; }
int & carray::operator[](int i) {
return ptr[i];
}//支持根据下标访问数组对象元素
private:
};
carray::carray(int s):size(s)
{
if (s == 0)
ptr = NULL;
else
ptr = new int[s];
}
carray::carray(carray & a)
{
if (!a.ptr)
{
ptr = NULL;
size = 0;
return;
}
ptr = new int[a.size];
memcpy(ptr, a.ptr, sizeof(int)*a.size);
size = a.