Содержание
- 
              
            5. Классы, использующие свободную память1 
- 
              
            5.1. Копирование объектовclass S { private: int n; Typearr[N]; public: S():n(0) {} S(int, …); . . . }; 2 
- 
              
            5.1. Копирование объектов(продолжение)S ob1(5); . . . { S ob2 = ob1; S ob3(3); ob3 = ob1; } . . . 3 n arr xxxxx 5 ob1 xxxxx 5 n arr ob2 xxxxx 5 n arr ob3 yyy 3 
- 
              
            5.2. Динамические объектыclass S { private: int n; Type *ptr; public: S():n(0), ptr(NULL) { } S(int, …); ~S(){delete [ ] ptr;} }; 4 
- 
              
            5.2. Динамические объекты(продолжение)S::S(int k, …):n(k), ptr(new Type[k]) { //необходимая инициализация // выделенной области памяти . . . } 5 
- 
              
            5.3. ПроблемыS ob1(5, …); . . . { S ob2 = ob1; S ob3(2, …); ob3 = ob1; } ob1  ??? 6 xxxxx n ptr ob2 n ptr ob3 n ptr ob1 5 5 5 ??? 2 tt ??? 
- 
              
            5.4. Копирующий конструкторвыделение памяти копирование данных S::S(const S &ob):n(ob.n), ptr(NULL) { if(n){ ptr = new Type[n]; // копирование данных } } 7 
- 
              
            5.5. Оператор присваиванияосвобождение памяти выделение новой памяти копирование данных проверка ситуации a = a 8 
- 
              
            5.5. Оператор присваивания(продолжение)S & S::operator = (const S& ob) { if(this != &ob) { // проверка a = a delete [ ] ptr; ptr = NULL; if((n = ob.n) != 0) { ptr = new Type[n]; // копирование данных } } return *this; } 9 
- 
              
            5.6. ИспользованиеS a1(3, …), a2; a2 = a3; // присваивание S a3(a1); // копирующий конструктор S a4 = a1; // копирующий конструктор 10 
- 
              
            5.6. Использование(продолжение)S func (S p) { S a(p); . . . return a; } . . . a2 = func(a3); // передача аргумента // возврат результата 11 // S func(const S &p) 
 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
                  
                 
               
               
               
               
               
               
               
               
               
               
               
   
   
   
   
   
   
   
   
   
   
   
  
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.