ВУЗ:
Составители:
Рубрика:
Объектно-ориентированное программирование на С++
gr.DeleteStudent(st);
gr.Print();
}
2.2.4. Конструкторы и деструктор
Обратимся к примеру о студентах и учебной группе, приведенному
в разделе 2.2.3. Как уже было сказано, объекты класса являются
обычными переменными. Поэтому использование объектов класса
должно быть таким же удобным, как и использование переменных.
Например, хотелось бы иметь возможность инициализировать объект
класса при его создании так же, как и объект структуры:
// ошибка !!!
Student std={"Иванов Иван Иванович", 21, 5,
1989, 123, 0.0};
Однако в этом случае возникнет ошибка. Причина ее в том, что
закрытые свойства класса недоступны извне. К ним могут обращаться
только методы этого класса. Именно поэтому в нашем примере созданы
функции инициализации объектов классов Student и Group. С их
помощью инициализация объекта происходит в два этапа: создание
переменной и заполнение ее данными:
// правильно !
Student std;
std.Init("Иванов Иван Иванович", 21, 5, 1989, 123, 0.0);
Но даже при использовании этого приема для создания объекта
могут возникнуть ошибки. Допустим, при создании учебной группы
программист забыл вызвать метод инициализации. Тогда свойство count
(количество студентов в группе) будет иметь некорректное значение. В
дальнейшем вызов методов класса Group может привести к
возникновению ошибки, поскольку это свойство используется при
обращении к элементам массива объектов-студентов. Этого можно
избежать, если предусмотреть обработку этих ошибок во всех методах
класса. Но такой подход очень трудоемкий. Гораздо легче избежать
ошибок, если будет производиться корректная инициализация данных.
Подобные проблемы решаются с помощью специальных функций,
которые вызываются при создании объекта и называются
69
Объектно-ориентированное программирование на С++
gr.DeleteStudent(st);
gr.Print();
}
2.2.4. Конструкторы и деструктор
Обратимся к примеру о студентах и учебной группе, приведенному
в разделе 2.2.3. Как уже было сказано, объекты класса являются
обычными переменными. Поэтому использование объектов класса
должно быть таким же удобным, как и использование переменных.
Например, хотелось бы иметь возможность инициализировать объект
класса при его создании так же, как и объект структуры:
// ошибка !!!
Student std={"Иванов Иван Иванович", 21, 5,
1989, 123, 0.0};
Однако в этом случае возникнет ошибка. Причина ее в том, что
закрытые свойства класса недоступны извне. К ним могут обращаться
только методы этого класса. Именно поэтому в нашем примере созданы
функции инициализации объектов классов Student и Group. С их
помощью инициализация объекта происходит в два этапа: создание
переменной и заполнение ее данными:
// правильно !
Student std;
std.Init("Иванов Иван Иванович", 21, 5, 1989, 123, 0.0);
Но даже при использовании этого приема для создания объекта
могут возникнуть ошибки. Допустим, при создании учебной группы
программист забыл вызвать метод инициализации. Тогда свойство count
(количество студентов в группе) будет иметь некорректное значение. В
дальнейшем вызов методов класса Group может привести к
возникновению ошибки, поскольку это свойство используется при
обращении к элементам массива объектов-студентов. Этого можно
избежать, если предусмотреть обработку этих ошибок во всех методах
класса. Но такой подход очень трудоемкий. Гораздо легче избежать
ошибок, если будет производиться корректная инициализация данных.
Подобные проблемы решаются с помощью специальных функций,
которые вызываются при создании объекта и называются
69
Страницы
- « первая
- ‹ предыдущая
- …
- 67
- 68
- 69
- 70
- 71
- …
- следующая ›
- последняя »
