Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка2(4-8).doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
166.4 Кб
Скачать

2.3. Конструкторы и деструкторы

Существует специальная категория функций-членов, отвечающих за такие действия с объектами, как инициализация, присваивание, управление памятью, преобразование типов и уничтожение. Такие функции называются конструкторами. Они вызываются компилятором неявно каждый раз, когда объект класса определяется или создается оператором new. В объявлении конструктора его имя совпадает с именем класса. Конструкторов в классе может быть множество благодаря понятию перегрузки функции, которое было рассмотрено ранее.

Функция-член, которая выполняет действия обратные конструктору называется деструктором. Деструктор нужен для удаления объекта и очистки памяти при выходе объекта класса из области видимости. Имя деструктора также совпадает с именем класса, но перед ним используется знак “~”.

C++ автоматически вызывает конструкторы и деструкторы для инициализации и очистки объектов класса.

Для конструкторов и деструкторов существуют определенные правила. Ниже представлены правила для конструкторов:

  1. для конструктора не указывается тип возвращаемого значения;

  2. конструктор не может возвращать значения;

  3. конструктор не наследуется;

  4. конструктор не может быть объявлен с модификаторами const, volatile, static или virtual.

Для деструкторов правила немного отличаются:

  1. деструктор не может иметь параметров;

  2. деструктор не может возвращать значения;

  3. деструктор не наследуется;

  4. класс не может иметь более одного деструктора;

  5. деструктор не может быть объявлен с модификаторами const, volatile, static или virtual.

Если в классе отсутствует деструктор, компилятор генерирует деструктор по умолчанию.

Пример:

#include <iostream.h>

class TTime {

private:

int year;

int month;

int day;

int hour;

int minute;

public:

TTime(int m, int d = -1, int y=-1, int hr=-1, int min=-1); //конструктор

~TTime(); //деструктор

void SetTime(int m, int d, int y, int hr, int min);

};

main()

{

TTime t1; //способ вызов конструктора для объекта t1 типа TTime

TTime t2(4,17,2008,16,17); //способ вызов конструктора для объекта t2 типа TTime

TTime now = new TTime(4,17,2008); //вызов конструктора для объекта now типа TTime

TTime *pnow = &now; //указатель на объект now

cout << “Дата и время установлены”;

return 0;

}

TTime::TTime(int m, int d, int y, int hr, int min)

{

cout << ”Создание объекта”;

SetTime(m,d,y,hr,min);

}

TTime::~TTime()

{

cout << ”Удаление объекта”;

}

void TTime::SetTime(int m, int d, int y, int hr, int min)

{

if (m >=0) month = m;

if (d >=0) day = d;

if (y >=0) year = y;

if (hr >=0) hour = hr;

if (min >=0) minute = min;

}

3. Лабораторное задание и методические указания по его выполнению

Изучить создание классов в языке програмирования С++, используя теоретические сведения данного методического пособия, а также на практике реализовать полученные знания в виде программы, выплняющей поставленные задачи с применением классов и методов.

Отчет должен содержать:

  • Наименование и цель работы.

  • Краткие теоретические сведения.

  • Листинг программы и полученные результаты