Задача 10. Класс динамического массива.
Задача 10: Создайте класс динамического массива, в котором реализована проверка выхода за границы массива. Перегрузите операторы: [ ], =, +, -,++ (добавление элемента в конец массива), – (удаление элемента из конца массива).
/*
* File: classdynamicarray.cpp
* Author: darkfire
*
* Created on December 11, 2010, 7:32 PM
*/
#include <stdlib.h>
#include <iostream>
/* Создайте класс динамического массива, в котором реализована проверка выхода
* за границы массива.
* Перегрузите операторы: [ ], =, +, -,
* ++ (добавление элемента в конец массива),
* -- (удаление элемента из конца массива).
*/
using namespace std;
class A{
int size;
int *a;
public:
A(int size);//Конструктор. Создание, инициализация массива.
A(const A &aA);//Конструктор копирования
~A(){//деструктор
delete [] a;
}
int Get () const {// метод выводит размер динамического массива
return size;
}
int &operator[](int j){ //Перегруженный оператор []
return a [j];
}
A operator--(); //Перегруженный оператор -- префиксной формы. Размер массива уменьшается на единицу
A operator++(); //Перегруженный оператор ++
A operator+(const A &);
A operator=(const A &);
};
A::A(int size){//Конструктор. Создание, инициализация массива.
this->size=size;
a = new int [size];
for (int i = 0; i < size; i++)
a [i] = i + 1;
}
A::A(const A &aA){//Конструктор копирования
size = aA.size;
a = new int [size];
for(int i = 0; i<size; i++)
a[i] = aA.a[i];
}
A A::operator-- (){ //Перегруженный оператор -- префиксной формы
//размер массива уменьшается на единицу
size-=1;
int *b=new int [size];
for (int i=0;i<size;i++){
b[i]=a[i];
}
delete [] a;
a=b;
return *this; //возвращаем объект генерирующий вызов
}
A A::operator++(){ //Перегруженный оператор ++
//размер массива увеличивается на единицу
size+=1;
int *b=new int [size];
for (int i=0;i<size-1;i++){
b[i]=a[i];
}
b[size-1]=size;//заполним новый элемент массива
delete [] a;
a=b;
return *this; //возвращаем объект генерирующий вызов
}
A A::operator+(const A &aA){
size = aA.Get()+this->size;
A temp(size);
return temp;
}
A A::operator=(const A &aA){
size = aA.size;
//cout<<"aA.size: "<<aA.size<<"\n";
a = new int [size];
for(int i = 0; i<size; i++)
a[i] = aA.a[i];
return *this; //возвращаем объект генерирующий вызов
}
int main() {
int i;
A object(12);
cout<<"\nShow:\n";
for(i=0;i<object.Get();i++){
cout<<object[i]<<" ";
}
cout<<"\n\n";
--object;
--object;
--object;
--object;//удалить один элемент массива
cout<<object.Get()<<"\n";
for(i=0;i<object.Get();i++){
cout<<object[i]<<" ";
}
cout<<"\n\n";
++object;
++object;//добавить один элемент массива
cout<<object.Get()<<"\n";
for(i=0;i<object.Get();i++){
cout<<object[i]<<" ";
}
cout<<"\n\n";
A C(0);
A B(5);
cout<<"object.Get = "<<object.Get()<<" B.Get = "<<B.Get()<<"\n";
C=object+B;
for(i=0;i<C.Get();i++){
cout<<C[i]<<" ";
}
cout<<"\n\n";
return (EXIT_SUCCESS);
};
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга