Задача 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); };
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!
7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах