Конструктор и деструктор
При создании объектов, можно сразу же проинициализировать элементы данных класса (свойства объекта), и выполняет эту функцию конструктор. Конструктор – специальная функция, которая выполняет начальную инициализацию элементов данных, причём имя конструктора обязательно должно совпадать с именем класса. Важным отличием конструктора от остальных функций является то, что он не возвращает значений вообще никаких, в том числе и void. В любом классе должен быть конструктор, даже если явным образом конструктор не объявлен (как в предыдущем классе), то компилятор предоставляет конструктор по умолчанию, без параметров. Деструктор класса – метод, выполняющий противоположную функцию – разрушения объекта класса. Имя деструктора должно совпадать с именем класса, но с добавлением символа тильда " ~ ". Доработаем класс data, добавив к нему конструктор data() и деструктор ~data().
Конструктор здесь имеет три параметра, через которые он получает информацию о дате. В теле конструктора вызывается set-функция для установки даты. При объявлении (и создании) объекта класса вызывается конструктор, которому в списке фактических параметров передаются три аргумента. Затем, в конструкторе выполняется начальная инициализация закрытых элементов данных.
Конструктор статического объекта вызывается автоматически в момент его описания, а деструктор – в конце области существования переменной – объекта класса. Место в программе для создания и уничтожения динамического объекта определяется программистом: оператор new вызывает констркутор, а оператор delete – деструктор метода. В данном примере задается динамический объект Y класса data. Для его создания используется опереатор new, вызывающий конструктор data() для инициализации элементов данных экземпляра класса. Соответственно, оператор delete вызывает деструктор ~data(), предназначенный для освобождения динамических областей памяти (в данном примере, правда, тело деструктора пусто). Отделение интерфейса от реализации Для написания различных программ можно пользоваться разработанным ранее классом, для этого необходимо подключить (#include) заголовочный файл (*.h), в котором он объявлен.
Чтобы главная функция увидела созданный нами класс и смогла его использовать, необходимо включить определение класса в исполняемом файле, с функцией main():
Интерфейс класса
Интерфейс класса – конструкция, определяющая методы и свойства, предоставляемые классом – описание типа данных и прототипов методов. Реализация класса – это способ осуществления алгоритмов работы класса – описание/задание тел методов. До этого мы не отделяли интерфейс класса от его реализации, то есть реализация методов осуществлялась внутри класса. Отделение интерфейса от реализации класса выполняется для того, чтобы скрыть способ осуществления работоспособности класса. Отделение интерфейса от реализации выполняется за 5 шагов:
Имена заголовочному и исполняемому файлам даются, как правило, одинаковые:
В интерфейсе класса остались объявленные переменные и прототипы методов класса. Теперь рассмотрим содержимое файла реализации методов класса:
Так как методы класса объявляются вне тела класса, то необходимо связать реализацию метода с классом. Методы класса объявляются (задаются) точно так же как и функции, только перед именем метода необходимо написать имя класса и поставить бинарную операцию разрешения области действия " :: ". Бинарная операция разрешения области действия привязывает метод, объявленный извне, к классу:
Итак, интерфейс класса определён, методы класса объявлены, осталось подключить заголовочный файл в исполняемом файле с main() функцией и программа готова.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|