.hpp文件
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
template <class T>
class arraylist
{
private:T* data ;//数组地址int size;//长度int count;//容量public:arraylist();~arraylist();void add(T t);T& get(int index);int getsize();
};
template <class T>
arraylist <T>:: arraylist()
{this->count = 2;this->size = 0;this->data = new T[count];
}
template <class T>
arraylist<T>::~arraylist()
{if(data != NULL){delete [] data;data = NULL;}
}
template <class T>
void arraylist<T>::add(T t)
{if(size == count){count = count * 2;T* newdata = new T[count];memcpy(newdata,data,size*sizeof(T));delete [] data;data = newdata;}data[size] = t; size++;
}
template <class T>
T& arraylist<T>::get(int index)
{return data[index];
}template <class T>
arraylist<T>::getsize()
{return size;
}
.main文件
#include <iostream>
#include <cstring>
#include <cstdlib>
#include "arraylist.hpp"
using namespace std;
class person
{
private:char name[50];int age;
public:person(){}person(char *name,int age){strcpy(this->name,name);this->age = age;}char *getname(){return name;}void setname(char *name){strcpy(this->name,name);}void showinformation(){cout << "姓名" << name << "\n年龄" << age <<endl;}
};
void fun01()
{person p1("张三",18);person p2("张四",18);person p3("张寺",18);person p4("张死",18);person p5("张斯",18);arraylist<person>ps;ps.add(p1);ps.add(p2);ps.add(p3);ps.add(p4);ps.add(p5);int len = ps.getsize();cout << "len=" << len << endl;for(int i = 0 ;i < len;i++){ps.get(i).showinformation();}
}int main(int argc, char *argv[])
{fun01();return 0;
}
运行结果: