Объектно-ориентированное программирование на C++. Андрианова А.А - 75 стр.

UptoLike

Объектно-ориентированное программирование на С++
Метод DeleteStudent(Student std) отличается от прежнего
варианта тем, что осуществляется формирование массива студентов
размерности (count 1), в который не включен удаляемый элемент.
Память, занятая прежним массивом студентов, освобождается, и
сформированный массив студентов становится атрибутом объекта класса
Group.
// метод исключения студента из группы
void Group::DeleteStudent(Student std)
{
Student st;
int istud;
if(FindStudent(std.GetNumberOfTestBook(), st, istud))
{
Student* tmp = new Student[count - 1];
for(int i = 0; i < istud; i++)
tmp[i] = students[i];
for(int i = istud; i < count - 1; i++)
{
tmp[i] = students[i + 1];
}
delete [] students;
students = tmp;
count--;
}
}
При уничтожении объектов в ходе работы программ необходимо
освобождать занятые им ресурсы. Поэтому кроме конструкторов, класс
содержит еще один специальный метод, который выполняет данную
задачу. Этот метод называется деструктором. Деструктор не имеет
возвращаемого значения и параметров. Имя деструктора совпадает с
именем класса с предшествующим символом “~”. Деструктор в классе
может быть только один. Он вызывается автоматически при уничтожении
объекта класса. Если в классе не определен деструктор, то он
предоставляется компилятором и освобождает память, занимаемую
объектом. Деструктор обычно переопределяют в случаях, когда в методах
класса происходит выделение памяти с помощью операции new.
75
                           Объектно-ориентированное программирование на С++

    Метод DeleteStudent(Student std) отличается от прежнего
варианта тем, что осуществляется формирование массива студентов
размерности (count – 1), в который не включен удаляемый элемент.
Память, занятая прежним массивом студентов, освобождается, и
сформированный массив студентов становится атрибутом объекта класса
Group.

     // метод исключения студента из группы
     void Group::DeleteStudent(Student std)
     {
          Student st;
          int istud;


          if(FindStudent(std.GetNumberOfTestBook(), st, istud))
          {
               Student* tmp = new Student[count - 1];
               for(int i = 0; i < istud; i++)
                    tmp[i] = students[i];
               for(int i = istud; i < count - 1; i++)
               {
                    tmp[i] = students[i + 1];
               }
               delete [] students;
               students = tmp;
               count--;
          }
     }

    При уничтожении объектов в ходе работы программ необходимо
освобождать занятые им ресурсы. Поэтому кроме конструкторов, класс
содержит еще один специальный метод, который выполняет данную
задачу. Этот метод называется деструктором. Деструктор не имеет
возвращаемого значения и параметров. Имя деструктора совпадает с
именем класса с предшествующим символом “~”. Деструктор в классе
может быть только один. Он вызывается автоматически при уничтожении
объекта класса. Если в классе не определен деструктор, то он
предоставляется компилятором и освобождает память, занимаемую
объектом. Деструктор обычно переопределяют в случаях, когда в методах
класса происходит выделение памяти с помощью операции new.



                                                                         75