Advertisement
35657

Untitled

Mar 2nd, 2024
791
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.45 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class SimpleVector {
  6.  
  7. public:
  8.  
  9.     SimpleVector() : arr_(new int[10]), size_(10) {
  10.         cout << "SimpleVector constructed for " << size_ << " elements, for " << this << endl;
  11.     }
  12.  
  13.     SimpleVector(int size) : arr_(new int[size]), size_(size) {
  14.         cout << "SimpleVector constructed for " << size_ << " elements, for " << this << endl;
  15.     }
  16.  
  17.     SimpleVector(const SimpleVector& object) : arr_(new int[object.size_]), size_(object.size_) {
  18.         for (int i = 0; i < size_; i++) {
  19.             arr_[i] = object.arr_[i];
  20.         };
  21.         cout << "SimpleVector copy constructed for " << size_ << " elements, for " << this << endl;
  22.     }
  23.  
  24.     SimpleVector& operator=(const SimpleVector& object) {
  25.         if (!(this == &object)) {
  26.             delete[] arr_;
  27.             arr_ = new int[object.size_];
  28.             size_ = object.size_;
  29.             for (int i = 0; i < size_; i++) {
  30.                 arr_[i] = object.arr_[i];
  31.             }
  32.         }
  33.  
  34.         cout << "SimpleVector copy operator = for " << size_ << " elements, for " << this << endl;
  35.         return *this;
  36.     }
  37.  
  38.     SimpleVector(SimpleVector&& object) : arr_(object.arr_), size_(object.size_) {
  39.         object.arr_ = nullptr;
  40.         object.size_ = 0;
  41.         cout << "SimpleVector move constructed for " << size_ << " elements, for " << this << endl;
  42.     }
  43.  
  44.     SimpleVector& operator=(SimpleVector&& object) {
  45.         if (!(this == &object)) {
  46.             delete[] arr_;
  47.             arr_ = object.arr_;
  48.             size_ = object.size_;
  49.             object.arr_ = nullptr;
  50.             object.size_ = 0;
  51.         }
  52.  
  53.         cout << "SimpleVector move operator = for " << size_ << " elements, for " << this << endl;
  54.         return *this;
  55.     }
  56.  
  57.     void print() const {
  58.         for (int i = 0; i < 10; i++) {
  59.             cout << arr_[i] << ' ';
  60.         }
  61.         cout << endl;
  62.     }
  63.  
  64.     int& operator[] (int index) {
  65.         if (index >= 0 && index < size_) {
  66.             return arr_[index];
  67.         }
  68.     }
  69.  
  70.     ~SimpleVector() {
  71.         delete[] arr_;
  72.         cout << "SimpleVector destructed for " << size_ << " elements, for " << this << endl;;
  73.     }
  74.  
  75. private:
  76.     int* arr_;
  77.     int size_;
  78. };
  79.  
  80.  
  81. SimpleVector VectorFactory(int arrSize) {
  82.     srand(time(NULL));
  83.     SimpleVector vec(arrSize);
  84.     for (int i = 0; i < arrSize; i++) {
  85.         vec[i] = rand() % 10;
  86.     }
  87.     return vec;
  88. }
  89.  
  90. int main() {
  91.     SimpleVector vec1; // имеется какой-то вектор
  92.     vec1 = VectorFactory(1000000); // записываем в него результат работы какой-то функции (копируем временный объект)
  93.     std::cout << "First 10 vec1 elements: ";
  94.     vec1.print(); // выводим результат
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement