class IntArray {
public:
// 构造函数
explicit IntArray( int size = DefaultArraySize );
IntArray( int *array, int array_size );
IntArray( const IntArray &rhs );
// 虚拟析构函数
virtual ~IntArray() ;
// 等于和不等于操作
bool operator==( const IntArray& ) const;
bool operator!=( const IntArray& ) const;
IntArray& operator=( const IntArray& );
int size() const;
// 去掉了索引检查功能 . . .
virtual int& operator[](int index);
virtual void sort();
virtual int min() const;
virtual int max() const;
virtual int find( int value ) const;
protected:
// 参见13.5 节的说明
static const int DefaultArraySize = 12;
void init( int sz, int *array );
int _size;
int *ia;
};
#include <cassert>
using namespace std;
#ifndef IntArray_H
#define IntArray_H
#include "IntArray.h"
IntArray::IntArray( int size){
init(size,0);
}
IntArray::IntArray( int *array, int array_size ){
init(array_size,array);
}
IntArray::IntArray( const IntArray &rhs ){
init( rhs._size, rhs.ia );
}
// 虚拟析构函数
IntArray::~IntArray() {
delete [] ia;
}
// 等于和不等于操作
bool IntArray::operator==( const IntArray& ) const{
return true;
}
bool IntArray::operator!=( const IntArray& ) const{
return false;
}
IntArray& IntArray::operator=( const IntArray& rhs ){
_size=rhs._size;
ia=rhs.ia;
return *this;
}
int IntArray::size() const {
return _size;
}
// 去掉了索引检查功能 . . .
int& IntArray::operator[](int index) {
return ia[index];
}
void IntArray::sort(){
}
int IntArray::min() const{
return 0;
}
int IntArray::max() const{
return 10;
}
int IntArray::find( int value ) const{
return -1;
}
void IntArray::init( int sz, int *array ){
_size = sz;
ia = new int[ _size ];
for ( int ix=0; ix < _size; ++ix )
if ( ! array )
ia[ ix ] = 0;
else
ia[ ix ] = array[ ix ];
}
#endif