Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отвкты на ГОСЫ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
4.89 Mб
Скачать

Конструкторы и деструкторы особые члены класса, служащие для инициализации и уничтожения объекта.

Конструктор представляет собой специальную функцию, которую C++ автоматически вызывает каждый раз при создании объекта. Обычное назначение конструктора заключается в инициализации элементов данных объекта. Конструктор имеет такое же имя, как и класс. апример, класс с именем file использует конструктор с именем file. Вы определяете конструктор внутри своей программы так же, как и любой метод класса. Единственное различие заключается в том, что конструктор не имеет возвращаемого значения. Когда вы позже объявляете объект, вы можете передавать параметры конструктору, как показано ниже:

class_name object(valuel, value2, value3)

Деструктор представляет собой функцию, которую C++ автоматически запускает, когда он или ваша программа уничтожает объект. Деструктор имеет такое же имя, как и класс объекта; однако вы предваряете имя деструктора символом тильды (~), например ~employee. В своей программе вы определяете деструктор точно так же, как и любой другой метод класса.

Особенности конст и дестр:

  • они не возвращают никакого значения даже void;

  • не учавствуют в механизме наследования;

  • нельзя получить их адрес;

  • конструкторы не могут быть виртуальными;

  • деструктор не имеет аргументов, а значит его нельзя перегружать;

  • автоматически вызываются при создании и уничтожении объекта.

Правила, по которым происходит создание/уничтожение объектов:

  •  Конструкторы и деструкторы автоматически запускаются всякий раз при создании и разрушении объектов.

  •  Глобальные и локальные статические объекты создаются в начале выполнения программы — до того, как управление попадает в main (или WinMain). Уничтожение таких объектов происходит в момент завершения программы в результате возврата из функции main (WinMain).

  •  Локальные объекты создаются, когда программа встречает их определение, и уничтожаются при выходе из функции.

  •  Конструктор объекта, память которому выделяется в области Heap (Куча) (посредством операции new), вызывается автоматически при вызове new; такой объект разрушается при явной передаче объекта в оператор delete.

Пример:

class CRect

{

float m_a, m_b; //Стороны.

public:

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

CRect(); // Конструктор без параметров.

CRect(float a. float b); // Конструктор с двумя параметрами.

~CRect(); // Деструктор.

...

};

...

// Реализация конструкторов и деструкторов.

CRect::CRect()

{

// Задание стандартных (нулевых) значений.

m_a = 0;

m_b = 0;

}

CRect::CRect(float a. float b)

{

// Задание значений, задаваемых параметрами.

m_a = a;

m_b = b;

}

CRect::~CRect()

{

// Просто вывод некоторой надписи.

cout<<"Destructor\n";

}

Пример использование класса в функции main:

void main()

{

//Использование класса.

CRect r; // Вызов конструктора без параметров.

cout<<"Perimeter = "<<r.GetPerim()<<"\n"; // Выведется 0.

cout<<"Square = "<<r.GetSquare()<<"\n"; // Выведется 0.

CRect r1(2, 3); // Вызов конструктора с параметрами.

cout<<"Perimeter = "<<r1.GetPerim()<<"\n"; // Выведется 10.

cout<<"Square = "<<r1.GetSquare()<<"\n"; // Выведется 6.

// В этом месте вызовутся 2 деструктора - для переменных r и r1.

// Соответственно, на консоль выведется два раза слово "Destructor".

}