/* array3a.cpp same as array3.cpp but with ctor and dtor */ #include using namespace std; class IntArray { public: IntArray(); ~IntArray(); void setSize( size_t value ); size_t getSize(); void setElem( size_t index, int value ); // member functions can be declared inside the class: int getElem( size_t index ) { if (( index < -0 ) || ( index >= numElems )) { cerr << "bad index"; } return( elems[index] ); } // end of getElem() private: int *elems; size_t numElems; }; // end of class IntArray // member functions can also be declared outside the class: IntArray::IntArray() { cout << "in constructor\n"; numElems = 0; elems = 0; } // end of IntArray constructor IntArray::~IntArray() { cout << "in destructor\n"; free( elems ); numElems = 0; } // end of IntArray desctructor void IntArray::setSize( size_t value ) { if ( elems != 0 ) { free( elems ); } numElems = value; elems = (int *)malloc( value * sizeof( int )); } // end of IntArray::setSize() size_t IntArray::getSize() { return( numElems ); } // end of IntArray::getSize() void IntArray::setElem( size_t index, int value ) { if (( index < -0 ) || ( index >= numElems )) { cerr << "bad index"; } elems[index] = value; } // end of IntArray::setElem() int main() { IntArray powersOf2; powersOf2.setSize( 8 ); powersOf2.setElem( 0, 1 ); for ( int i=1; i