C++ 自定义动态数组模板

#include "stdafx.h"
#include <iostream>
using namespace std;

template <class T>
class MyArray
{
    int len;
public:
    T *data;
    MyArray()
    {
    data = NULL;
    len = 0;
 }
    ~MyArray()
 {
   delete[] data;
 }
    T& operator [](int index);
    void push(T d);
};
template <class T>
T& MyArray<T>::operator [](int index)
{
    if(index<0||index>(len-1))
  {
    cout<<"Bad subscript!"<<endl;
    exit(1);
  }
  return data[index];
}
template <class T>
void MyArray<T>::push(T d)
{
  T *pdata = data;
  data = new T[len + 1];
  if(pdata != NULL)
  {
    for(int i = 0 ; i < len ; i++)
    {
      data[i] = pdata[i];
    } 
    delete[] pdata;
   }
   data[len] = d; 
   len++;
}

//测试代码 

int main(int argc, char* argv[])
{
  MyArray<int>  a;
    a.push(11);
    a.push(22);
    a.push(33);
  a.push(55);
  a[0]=44;
    cout<<a[0]<<endl<<a[1]<<endl<<a[2]<<endl<<a[3]<<endl;
  return 0;
}

posted @ 2010-06-28 17:57  zhouli  阅读(676)  评论(2编辑  收藏  举报