|
Программирование >> Структурное программирование
private: int *ptr; указатель на первый элемент массива int size; размер массива static int arrayCount; число экземпляров массивов #endif Рис. 8.4. Определение класса Array (чааь 1 из 7) ARRAYl. СРР Определения функций-элементов класса Array tinclude <iostream.h> tinclude <stdlib.h> tinclude <assert.h> tinclude arrayl.h которая дает возможность получить количество созданных ранее массивов. Далее программа создает два объекта класса Array: integersl с семью элементами и integers2 с десятью элементами по умолчанию (значение по умолчанию указано конструктором Array). Чтобы получить новое количество объектов снова используется статическая функция-элемент getArrayCount. Функция-элемент getSize возвращает размер массива integersl. Программа выводит на экран размер массива integersl, затем выводит сам массив, используя перегруженную операцию поместить в поток, чтобы удостовериться, что конструктор задал элементам массива правильные начальные значения. Далее выводится размер массива integers2, а затем с помощью операции поместить в поток выводится сам массив. ARRAY1. Н Простой класс Array (для целых) .fndef ARRAY1 H ttdefine ARRAYl Н Ч- tinclude <iostream.h> IS class Array { friend ostream soperator<<(ostream &, const Array &); Щ friend istream &operator>>(istream &, Array &); public: > Array(int = 10); конструктор с умолчанием Array(const Array &); конструктор копии -Array О; деструктор int getSizeO const; возвращение размера const Array &operator=(const Array &); присваивание массивов int operator==(const Array &) const; проверка равенства j.-j. int operator ! = (const Array &) const; сравнение на неравенство У-{ int Soperator [ ] (int) ; операция индексации static int getArrayCount0; возвращение числа .. . экземпляров II Деструктор класса Array Array::-Array() --arrayCount; уменьшение на один объект delete [ ] ptr; возвращение области памяти массива Получение размера массива int Array::getSize() const { return size; } Перегруженная операция присваивания const Array SArray::operator=(const Array Sright) if (Sright != this) { проверка самоприсваивания delete [ ] ptr; возвращение области памяти size = right.size; изменение размера объекта ptr = new int[size]; выделение памяти для копии массива assert(ptr != 0); завершение, если память не выделена for (int i = 0; i < size; i++) ptr[i] = right.ptr[i]; массив копии в объект return *this; позволяет = у = z; Рис. 8.4. Определения функций-элементов класса Array (часть 2 из 7) Инициализация статического элемента данных с областью действия файл int Array::arrayCount = 0; пока нет никаких объектов Конструктор с умолчанием класса Array Array::Array(int arraySize) ( ++arrayCount; прибавление одного объекта size = arraySize; no умолчанию размер равен 10 ptr = new int[size]; выделение пространства для массива assert(ptr != 0); завершение, если память не выделена for (int i = 0; i < size; i++) ptr[i] = 0; задание массиву начальных значений Конструктор копии класса Array Array::Array(const Array Sinit) ( ++arrayCount; прибавление одного объекта size = int.size; no умолчанию размер равен 10 ptr = new int[size]; выделение памяти для массива assert(ptr != 0); завершение, если память не выделена for (int i = 0; i < size; i++) ptr[i] = init.ptr[i]; копирование init в объект Проверка равенства двух массивов и возвращение значения 1, если равны, и значения О, если не равны. int Array::operator==(const Array Sright) const { if (size != right.size) return 0; массивы разных размеров for (int i = 0; i < size; i++) if (ptr [i] != right.ptr [i] ) return 0; массивы не равны return 1; массивы равны Проверка неравенства двух массивов и возвращение значения 1, рЖ II если не равны, и значения О, если равны. int Array::operator!=(const Array Sright) const if (size != right.size) return 1; for (int i = 0; i < size; i++) if (ptr[i] != right.ptr[i]) return 1; return 0; массивы разных размеров массивы не равны массивы равны II Перегруженная операция индексации int SArray::operator[](int subscript) { проверка ошибочного выхода индекса из диапазона assert(О <= subscript && subscript < size); return ptr[subscript]; возвращение ссьшки создает L-величину Возвращение числа возникших объектов Array int Array::getArrayCount( ) { return arrayCount; } Щ;;*:; Перегруженная операция ввода для класса Array; вводит значения всего массива istream &operator (istream Sinput, Array &a) t$r for (int i = 0; i < a. size; i++) input a.ptr[i]; return input; позволяет cin x y; Рис. 8.4. Определения функций-элементов класса Array (часть 3 из 7)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |