Mega Code Archive

 
Categories / C++ Tutorial / Data Types
 

Define your own array class

#include <iostream> using std::cerr; using std::cout; using std::cin; using std::endl; using std::ostream; using std::istream; #include <iomanip> using std::setw; #include <cstdlib> using std::exit; class Array {    friend ostream &operator<<( ostream &, const Array & );    friend istream &operator>>( istream &, Array & ); public:    Array( int = 10 );    Array( const Array & );    ~Array();    int getSize() const;    const Array &operator=( const Array & );    bool operator==( const Array & ) const;    bool operator!=( const Array &right ) const    {       return ! ( *this == right );    }    int &operator[]( int );    int operator[]( int ) const; private:    int size;    int *ptr; }; Array::Array( int arraySize ) {    size = arraySize;    ptr = new int[ size ];    for ( int i = 0; i < size; i++ )       ptr[ i ] = 0; } Array::Array( const Array &arrayToCopy ) : size( arrayToCopy.size ) {    ptr = new int[ size ];    for ( int i = 0; i < size; i++ )       ptr[ i ] = arrayToCopy.ptr[ i ]; } Array::~Array() {    delete [] ptr; } int Array::getSize() const {    return size; } const Array &Array::operator=( const Array &right ) {       delete [] ptr;       size = right.size;       ptr = new int[ size ];       for ( int i = 0; i < size; i++ )          ptr[ i ] = right.ptr[ i ];    return *this; } bool Array::operator==( const Array &right ) const {    if ( size != right.size )       return false;    for ( int i = 0; i < size; i++ )       if ( ptr[ i ] != right.ptr[ i ] )          return false;    return true; } int &Array::operator[]( int subscript ) {    return ptr[ subscript ]; } int Array::operator[]( int subscript ) const {    return ptr[ subscript ]; } istream &operator>>( istream &input, Array &a ) {    for ( int i = 0; i < a.size; i++ )       input >> a.ptr[ i ];    return input; } ostream &operator<<( ostream &output, const Array &a ) {    int i;    for ( i = 0; i < a.size; i++ ) {       output << a.ptr[ i ];    }    return output; } int main() {    Array integers1( 7 );    Array integers2;    cout << integers1.getSize() << integers1;    cout << integers2.getSize() << integers2;    cout << "\nEnter 17 integers:" << endl;    cin >> integers1 >> integers2;    cout << "integers1:\n" << integers1  << "integers2:\n" << integers2;    if ( integers1 != integers2 )       cout << "integers1 and integers2 are not equal" << endl;    Array integers3( integers1 );    cout << integers3.getSize() << integers3;    integers1 = integers2;    cout << integers1;    cout << integers2;    if ( integers1 == integers2 )       cout << "integers1 and integers2 are equal" << endl;    cout << integers1[ 5 ];    integers1[ 5 ] = 1000;    cout << integers1;    return 0; }