Lab / Определения функций-элементов класса Array 2
.doc// Инициализация статического элемента данных с областью
// действия файл
int Array::arrayCount =0; // пока нет никаких объектов
// Конструктор с умолчанием класса Array
Array::Array(int arraySize)
{
++arrayCount; //прибавление одного объекта
size = arraySize; //по умолчанию размер равен 10
ptr = new int[size]; //выделение пространства для массива
assert(ptr !- 0); //завершение, если память не выделена
for (int i = 0; i < size; i++)
ptr[i] = 0; //задание массиву начальных значений
}
// Конструктор копии класса Array Array::Array(const Array &init)
//прибавление одного объекта //по умолчанию размер равен 10 //выделение памяти для массива
//завершение, если память не выделена
{
++arrayCount;
size = int.size;
ptr = new int[size];
assert(ptr != 0);
for (int i = 0; i < size; i++)
ptr[i] = init.ptr[i]; //копирование init в объект
}
// Деструктор класса Array Array::~Array()
{
--arrayCount; delete [ ] ptr;
//уменьшение на один объект //возвращение области памяти массива
}
// Получение размера массива
int Array::getSize() const { return size; }
// Перегруженная операция присваивания
const Array &Array::operator=(const Array &right)
{
// проверка самоприсваивания
// возвращение области памяти
// изменение размера объекта
// выделение памяти для копии массива
// завершение, если память не выделена
if (&right != 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;
}