Программирование >>  Структурное программирование 

1 ... 169 170 171 [ 172 ] 173 174 175 ... 342


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)



1 ... 169 170 171 [ 172 ] 173 174 175 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика