ВУЗ:
Составители:
Рубрика:
131
невозможность задания произвольных границ изменения ин-
декса;
отсутствие предопределенных операций присваивания масси-
вов, выполнения над ними арифметических операций и т.д.
Создадим класс Array, являющийся формализацией концепции
“одномерный массив целых“.
Для простоты предполагаем, что массив типа Array имеет тот же
диапазон изменения индексов, что и обычный массив С++, а изменение
его размера после создания невозможно.
Определим над типом Array операции присваивания, сложения и
вывода. Чтобы обращаться к элементам такого массива, переопределим
операцию [ ].
// Файл Array.cpp
# include < iostream.h >
# include < stdlib.h >
class Array {
int *pa; // Массив целых;
int sz; // размер массива.
public:
Array ( const Array &v );
Array ( const int a[ ], int s );
Array ( int s );
virtual ~Array ( ){ delete pa; }
int size ( ) { return sz; }
int & operator [ ] ( int );
Array & operator = ( Array& );
// Результат возвращается по ссылке для возможности
// множественного присваивания типа a=b=c;
Array & operator + ( Array& );
ostream & print ( ostream& );
};
Array::Array (const int a[], int s ){
// Инициализация массива типа Array обычным массивом.
if ( s <= 0 ) { cout << “Неверный размер массива: “<< s <<“\n“;
exit (1);}
if (!( pa = new int [ sz = s ] )){
cout<<“Неудача при выделении памяти \n“; exit (1); }
for ( int i = 0; i<sz; i++) pa [ i ] = a [ i ];
}
Array::Array ( const Array &v ){ // Конструктор копирования.
Страницы
- « первая
- ‹ предыдущая
- …
- 127
- 128
- 129
- 130
- 131
- …
- следующая ›
- последняя »
