可变长数组类的实现

#include 

using namespace std;
class CArray
{
    int size;//数组元素的个数;
    int *ptr;//指向动态分配的数组;
public:
    CArray(int s=0);
    CArray(CArray &a);
    ~CArray();
    void push_back(int v);//用于在数组尾部添加一个元素v;
    CArray &operator=(const CArray& a);//用于数组元素的赋值;用于深拷贝的操作;
    int length(){return size;}//返回数组元素的个数;
    int& CArray::operator[](int i)
    {
        return ptr[i];
    }

};
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.size;
}
CArray::~CArray()
{
    if(ptr)
        delete[]ptr;
}
CArray& CArray::operator=(const CArray& a)
{
    if(ptr==a.ptr)
        return *this;
    if(a.ptr==NULL)
    {
        if(ptr)
            delete[]ptr;
        ptr=NULL;
        size=0;
        return *this;
    }

你可能感兴趣的:(领悟)