dllbridge

Глубокое копирование!

Oct 14th, 2025
429
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.34 KB | None | 0 0
  1.  
  2.  
  3.  
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. ////////////////////////////////////////////////
  8. class Array
  9. {
  10.      
  11.       private:  
  12.                
  13.    
  14.       public:   int  size;
  15.                 int *data;
  16.       //////////////////////
  17.       Array(int s) : size(s)                                                                          // Конструктор
  18.       {
  19.          data = new int[size];
  20.          
  21.          for(int i = 0; i < size; i++)
  22.          {
  23.              data[i] = 0;
  24.          }
  25.       }
  26.      
  27.    
  28.       ////////////////////////////////////////////
  29.       Array(const Array& other) : size(other.size)                              // Конструктор глубокого копирования
  30.       {
  31.                  
  32.            cout << "Глубокое копирование!" << endl;      
  33.                  
  34.            data = new int[size];
  35.            
  36.            for (int i = 0; i < size; i++)
  37.            {
  38.               data[i] = other.data[i];                                          // копируем значения, а не указатели
  39.            }
  40.       }
  41.    
  42.       ///////  
  43.      ~Array()                                                                                          // Деструктор
  44.       {
  45.           delete[] data;
  46.       }
  47.    
  48.       ////////////////////////////////////  
  49.       Array& operator = (const Array& other)                                   // Оператор присваивания (для полноты)
  50.       {
  51.              if(this != &other)
  52.              {
  53.                 delete[] data;
  54.                 size = other.size;
  55.                 data = new int[size];
  56.                 for(int i = 0; i < size; i++)
  57.                 {
  58.                     data[i] = other.data[i];
  59.                 }
  60.              }
  61.       return *this;
  62.       }
  63. };
  64.  
  65.  
  66. void monitor(Array a);
  67.  
  68. /////////////////////////////////////////////////////////////////
  69. int main()
  70. {
  71.  
  72.     setlocale(LC_ALL, "rus");
  73.    
  74.     Array a1(12), a2(7), a3(10);   
  75.    
  76.     a2 = a1;
  77.    
  78.     monitor(a2);
  79.    
  80. return 0;
  81. }
  82.  
  83.  
  84. //////////////////////////////////////////////////////////////////
  85. void monitor(Array a)
  86. {
  87.      
  88.      for(int i = 0; i < a.size; i ++)
  89.      {
  90.              
  91.          cout << a.data[i] << ", ";        
  92.      }   cout << endl;
  93. }
  94.  
  95.  
  96.  
  97.  
Advertisement
Add Comment
Please, Sign In to add comment