array)i delete l elements; l Aray<Type>& operator=∥数组复制 const Array<Type> &a); ype& operator](inti);∥取元素值 int Length( const return ArraySize; ∥取数组长度 void Resize( int sz ) ∥/扩广充数组
~Array( ) { delete [ ]elements;} Array<Type> & operator = //数组复制 ( const Array<Type> & A ); Type& operator [ ] ( int i ); //取元素值 int Length ( ) const { return ArraySize; } //取数组长度 void ReSize ( int sz ); //扩充数组 }
维数组公共操作的实现 template <class Type> void Array<Type>:: getArray (i 有函数:创建数组存储空间 elements new Type [ArraySize]; if elements== NULL arraySize =0; cerr<<存储分配错!"<<endl return
template <class Type> void Array<Type> :: getArray ( ) { //私有函数:创建数组存储空间 elements = new Type[ArraySize]; if ( elements == NULL ) { arraySize = 0; cerr << “存储分配错!" << endl; return; } } 一维数组公共操作的实现
template <class Type> Array<Type>:: Array( int sz )( /构造函数 if(sz<=0){ arraySize =0 cerr<<“非法数组大小”<<endl; return Arraysize sz getArray
template <class Type> Array<Type> :: Array ( int sz ) { //构造函数 if ( sz <= 0 ) { arraySize = 0; cerr << “非法数组大小” << endl; return; } ArraySize = sz; getArray ( ); }
template <class Type> Array<Type>. Aray(Aray<ype>&x){∥复制构造函数 int n= ArraySize =x Arraysize elements=new Typen; if elements== NULL)& arraysIze 0 cerr<<“存储分配错"<<endl; return ype srcptr=xelements; Type *destptr=elements; while(n)*destptr++=* srcptr++
template <class Type> Array<Type> :: Array ( Array<Type> & x ) { //复制构造函数 int n = ArraySize = x.ArraySize; elements = new Type[n]; if ( elements == NULL ) { arraySize = 0; cerr << “存储分配错”<< endl; return; } Type *srcptr = x.elements; Type *destptr = elements; while ( n-- ) * destptr++ = * srcptr++; }
template <class Type> Type& Array<Type> . operator[( int ii ∥/按数组名及下标i。取数组元素的值 if (i<0 1> ArraySize-1t cerr<<“数组下标超界”<<endl return NULL return elements 1: 使用该函数于赋值语句 Pos=Position i-1]+ Number[i-1
template <class Type> Type& Array<Type> :: operator [ ] ( int i ) { //按数组名及下标 i,取数组元素的值 if ( i < 0 || i > ArraySize-1 ) { cerr << “数组下标超界”<< endl; return NULL; } return elements[i]; } 使用该函数于赋值语句 Pos = Position[i -1] + Number[i -1]