ВУЗ:
Составители:
Рубрика:
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
В нашем примере память, занятую массивом студентов в объекте
класса Group, надо освобождать при уничтожении объекта. Для этого
добавляем в определение класса деструктор:
// деструктор
Group::~Group()
{
delete [] students;
cout << "Группа удалена" << endl;
}
Существует еще один вид конструктора, который называется
конструктором копирования. Он вызывается, когда объекты класса
являются параметрами или возвращаемыми значениями некоторых
функций. Также он используется в случае явного создания копии уже
существующего объекта.
Например, необходимо объединить две учебные группы в одну. Для
этого создадим метод IntegrateGroup() класса Group:
// Метод объединения двух групп
Group Group::IntegrateGroup(Group gr)
{
Group newGroup(*this); // или
// Group newGroup = (*this);
for(int i = 0; i < gr.count; i++)
newGroup.AddStudent(gr.students[i]);
return newGroup;
}
Объединение групп происходит следующим образом: к объекту-
группе, для которого вызывается метод IntegrateGroup(),
добавляются студенты из группы, передаваемой в качестве параметра. В
методе создается новый объект-группа, который является копией первой
группы, а затем с помощью метода AddStudent(Student)
добавляются студенты из второй группы. Метод возвращает созданную
группу.
Без определенного в классе конструктора копирования работа метода
будет некорректной. Конструктор копирования, так же как и конструктор
по умолчанию, предоставляется компилятором в случае его отсутствия в
определении класса. Он осуществляет поэлементное копирование
значений всех атрибутов объекта. При создании копии объекта класса
76
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
В нашем примере память, занятую массивом студентов в объекте
класса Group, надо освобождать при уничтожении объекта. Для этого
добавляем в определение класса деструктор:
// деструктор
Group::~Group()
{
delete [] students;
cout << "Группа удалена" << endl;
}
Существует еще один вид конструктора, который называется
конструктором копирования. Он вызывается, когда объекты класса
являются параметрами или возвращаемыми значениями некоторых
функций. Также он используется в случае явного создания копии уже
существующего объекта.
Например, необходимо объединить две учебные группы в одну. Для
этого создадим метод IntegrateGroup() класса Group:
// Метод объединения двух групп
Group Group::IntegrateGroup(Group gr)
{
Group newGroup(*this); // или
// Group newGroup = (*this);
for(int i = 0; i < gr.count; i++)
newGroup.AddStudent(gr.students[i]);
return newGroup;
}
Объединение групп происходит следующим образом: к объекту-
группе, для которого вызывается метод IntegrateGroup(),
добавляются студенты из группы, передаваемой в качестве параметра. В
методе создается новый объект-группа, который является копией первой
группы, а затем с помощью метода AddStudent(Student)
добавляются студенты из второй группы. Метод возвращает созданную
группу.
Без определенного в классе конструктора копирования работа метода
будет некорректной. Конструктор копирования, так же как и конструктор
по умолчанию, предоставляется компилятором в случае его отсутствия в
определении класса. Он осуществляет поэлементное копирование
значений всех атрибутов объекта. При создании копии объекта класса
76
Страницы
- « первая
- ‹ предыдущая
- …
- 74
- 75
- 76
- 77
- 78
- …
- следующая ›
- последняя »
