Тема: Створіть клас Масив із конструкторами, деструктором та перевантаженими
Добрий день,є ось таке завданнячко:створіть клас Масив із конструкторами, деструктором та перевантаженими операторами [], =, ++, -- (збільшення та зменшення на одиницю всіх елементів масиву), <<, >>. Продемонструйте роботу із створеним масивом.
Ось код ,а питання полягає в тому ,як можно "простіше написати цей код"
#include <iostream>
#include <ostream>
using namespace std;
class Array {
public:
explicit Array(const std::size_t size) : size{ size }, data{ new int[size] } {}
Array(const Array &other) : size{ other.size }, data{ new int[other.size] } {
for (int i = 0; i < other.size; ++i) {
data[i] = other.data[i];
}
}
// copy assignment
Array &operator=(const Array &other) {
if (this != &other) {
delete[] data;
this->size = other.size;
this->data = new int[other.size];
for (int i = 0; i < other.size; ++i) {
data[i] = other.data[i];
}
}
return *this;
}
// destructor
virtual ~Array() {
delete[] data;
}
int operator[](size_t i) const {
return data[i];
}
int &operator[](size_t i) {
return data[i];
}
size_t getSize() const {
return size;
}
private:
size_t size;
int *data;
};
// prefix
Array &operator++(Array &array) {
for (size_t i = 0; i < array.getSize(); ++i) {
++array[i];
}
return array;
}
// postfix
Array operator++(Array &array, int) {
Array temp{ array };
++array;
return temp;
}
// prefix
Array &operator--(Array &array) {
for (size_t i = 0; i < array.getSize(); ++i) {
--array[i];
}
return array;
}
// postfix
Array operator--(Array &array, int) {
Array temp{ array };
--array;
return temp;
}
std::ostream &operator<<(ostream &out, const Array &array) {
for (size_t i = 0; i < array.getSize(); ++i) {
out << array[i] << " ";
}
return out;
}
std::istream &operator>>(istream &in, Array &array) {
for (size_t i = 0; i < array.getSize(); ++i) {
in >> array[i];
}
return in;
}
int main() {
cout << c << std::endl;
cout << c++ << std::endl;
cout << c << std::endl;
cout << ++c << std::endl;
cout << c << std::endl;
cout << c-- << std::endl;
cout << c << std::endl;
cout << --c << std::endl;
return 0;
}