C++ - 创建动态数组

  • 动态创建数组
//
//  main.cpp
//  创建动态数组
//
//  Created by MENGCHEN on 16/1/19.
//  Copyright © 2016年 MENGCHEN. All rights reserved.
//

#include 
class CArray {
    int size;
    int *ptr;
public:
    CArray(int s = 0);
    CArray(CArray & a);
    ~CArray();
    void push_back(int v);
    CArray& operator=(const CArray & a);
    int&operator[](int i);
    int length(){return size;}
};
int& CArray::operator[](int i)//返回值是 int 不行!不支持 a[i] = 4
{   //用以支持根据下标访问数组元素
    //如n = a[i] 和 a[i] = 4;这样的语句
    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;
        }
    }
    //当原有空间不够大的时候,动态分配新的空间
    if (size

你可能感兴趣的:(C++ - 创建动态数组)