Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Constructor Destructor






ЛЕКЦИЯ 3

ФУНКЦИИ-ЧЛЕНЫ КЛАССА_______________________________________________________ 1

Конструкторы и деструкторы_________________________________________________________________ 1

Правила для конструкторов _________________________________________________________________ 2

Правила для деструкторов___________________________________________________________________ 2

Список инициализации элементов_____________________________________________________________ 3

Конструкторы по умолчанию_________________________________________________________________ 3

Конструкторы копирования__________________________________________________________________ 4

Указатель this______________________________________________________________________________ 5

Встраиваемые (inline) функции________________________________________________________________ 5

Статические данные-члены класса____________________________________________________________ 6

Статические функции-члены класса ___________________________________________________________ 7

Константные данные-члены класса____________________________________________________________ 7

Константные функции-члены класса___________________________________________________________ 8

Константные объекты________________________________________________________________________ 8

ФУНКЦИИ-ЧЛЕНЫ КЛАССА

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

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

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

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

Функцией-членом, выполняющей действия, обратные конструктору, является деструктор. Эта функ­ция-член вызывается при удалении объекта. Деструктор обычно выполняет работу по освобождению па­мяти, занятой объектом. Он имеет то же имя, что и класс, которому он принадлежит, с предшествующим символом ~ и не имеет возвращаемого значения. Рассмотрим пример класса, демонстрирующего работу конструктора и деструктора:

class Dot { public:

Dot () { cout «" Constructor \n"; } // конструктор

~Dot () { cout «" Destructor \n"; } // деструктор

}

void main () {

Dot A; // создание объекта

}

Эта программа выводит на экран следующее:

Constructor Destructor

Деструктор класса вызывается в момент удаления объекта. Это означает, что для глобальных объек­тов он вызывается при завершении программы, а для локальных - когда они выходят из области видимо­сти. Заметим, что невозможно получить указатели на конструктор и деструктор.

Обычно конструктор содержит параметры, которые позволяют при построении объекта задать ему не­которые аргументы.

Если нужно проинициализировать переменные класса, используется конструктор с параметрами. Рассмотрим следующий пример:






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.