4/25 cpp模板

template<class T>
class myarr {
    int capacity;
    int size;
    T* arr;
public:
    myarr(int a)
    {
        arr = new T[a];
        size = 0;
        capacity = a;
    }

    myarr(myarr<T>& a)
    {
        arr = new T[a.capacity];
        size = a.size;
        capacity = a.capacity;
    }
    ~myarr()
    {
        if (arr != NULL)
        {
            delete[] arr;
            size = 0;
            capacity = 0;
        }
    }
    myarr& operator=(myarr<T>& a)
    {
        if (arr != NULL)
        {
            delete[] arr;
            size = 0;
            capacity = 0;
        }
        arr = new T[a.capacity];
        capacity = a.capacity;
        size = a.size;
        return *this;
    }
    void tail_insert(T& a)
    {
        if (size == capacity)
        {
            cout << "已经满了,不能再插了" << endl;
            return;
        }
        arr[size] = a;
        size++;
    }
    void tail_delete()
    {
        if (size == 0)
        {
            cout << "没有可以删的" << endl;
            return;
        }
        size--;
    }
    T& operator[](int n)
    {
        if (n > size)
        {
            cout << "超范围了" << endl;
        }
        return arr[n];
    }
};

class people {
    int id;
    string name;
public:
    people() {}
    people(int id_, string name_) :id(id_), name(name_) {}
    void display()
    {
        cout << "学号是:" << id << "      姓名是:" << name << endl;
    }
};


void test()
{
    people a(50, "Michelle");
    people b(49, "tom");
    people c(48, "Adam");
    
    myarr<people> shuzu(3);
    myarr<people> aa = shuzu;
    aa.tail_insert(a);
    aa.tail_insert(b);
    aa.tail_insert(c);
    aa[0].display();
    aa.tail_delete();
    aa[3].display();
}

int main()
{
    test();
    return 0;
}

 

posted @ 2023-04-25 22:53  aallofitisst  阅读(12)  评论(0)    收藏  举报