Лабораторная работа №2. Тема: “Конструкторы и деструкторы”

Тема: “Конструкторы и деструкторы”

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

Ø Конструктор должен иметь то же имя, что и сам класс.

Ø Конструктор не может возвращать значение. Более того, в прототипе или заголовке определения конструктора никакой тип (даже void) не указывается.

Конструктор, объявляемый без аргументов, называется конструктором по умолчанию (default constructor).

Конструктор при инициализации объектов может вызываться либо неявно, что делается чаще, либо явно, используя имя конструктора:

..................

Date today(15); // Неявный вызов конструктора

Date yesterday = Date (14, 07); // Явный вызов конструктора

..................

Одной из важнейших форм перегружаемого конструктора является конструктор копирования (copy constructor), который служит для получения точных копий уже существующего объекта. В частности конструктор копирования вызывается, когда объект передается функции по значению, при построении временного объекта как возвращаемого значения функции, а также при использовании объекта для инициализации другого объекта.

Любой конструктор копирования имеет следующую общую форму:

Имя_класса (const имя_класса & obj);

Параметры конструктору можно передать с помощью списка инициализации членов. Этот список следует сразу за списком формальных параметров и отделяется от него двоеточием. Отдельный элемент списка представляет собой имя инициализируемого члена-данного, за которым в круглых скобках задается инициализирующее выражение.

Если член-данное является ссылкой или имеет спецификацию const, то его можно инициализировать только с помощью списка инициализации.

Для любого создаваемого класса рекомендуется создавать три конструктора: основной конструктор, конструктор по умолчанию и конструктор копирования.

Деструкторы (destructor) - из той же категории, что и конструкторы. Они используются для выполнения определенных операций при удалении объекта. Деструктор вызывается автоматически при выходе объекта из области видимости. Деструктор имеет имя, всегда совпадающее с именем класса, но предваряется операцией дополнение (~).

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

Ø В деструкторе не определяется тип возвращаемого значения, даже тип void;

Ø Деструктор не должен иметь параметров;

Каждый объект данного класса хранит свою копию членов-данных, но для всех объектов вызывается один и тот же вариант функции-члена. Для того, чтобы не путать такие объекты, у каждой функции-члена имеется неявный скрытый указатель this. Указатель this – это предопределенный компилятором указатель, который всегда указывает на объект класса, для которого вызывается функция-член этого класса. Он объявляется компилятором следующим образом:

Имя_класса * const this;

Поскольку this – это ключевое слово, то его нельзя объявить явно, но явно пользоваться им можно. Изменить значение этого указателя также нельзя, поскольку он объявлен как константный указатель.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: