русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Конструкторы и деструкторы, их вызов.


Дата добавления: 2015-07-09; просмотров: 668; Нарушение авторских прав


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

□ Конструктор не возвращает значение, даже типа void. Нельзя получить указатель на конструктор.

□ Класс может иметь несколько конструкторов с разными параметрами для разных видов инициализации (при этом используется механизм перегрузки).

□ Конструктор, вызываемый без параметров, называется конструктором по умолчанию.

□ Параметры конструктора могут иметь любой тип, кроме этого же класса. Можно задавать значения параметров по умолчанию. Их может содержать только один из конструкторов.

□ Если программист не указал ни одного конструктора, компилятор создает его автоматически. Такой конструктор вызывает конструкторы по умолчанию для полей класса и конструкторы по умолчанию базовых классов. В случае, когда класс содержит константы или ссылки, при попытке создания объекта класса будет выдана ошибка, поскольку их необходимо инициализировать конкретными значениями, а конструктор по умолчанию этого делать не умеет.

□ Конструкторы не наследуются.

□ Конструкторы нельзя описывать с модификаторами const, virtual и static.

□ Конструкторы глобальных объектов вызываются до вызова функции main. Локальные объекты создаются, как только становится активной область их действия. Конструктор запускается и при создании временного объекта (например, при передаче объекта из функции).

Перегружать можно не только конструкторы, но и другие методы класса.

Существует еще один способ инициализации полей в конструкторе:

monstr::monstr(int he. int am):health (he), ammo (am), skin (red), name (0){}

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



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

Т: :T(const Т&) { _ /* Тело конструктора, */ }

где Т — имя класса.

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

□ при описании нового объекта с инициализацией другим объектом;

□ при передаче объекта в функцию по значению;

□ при возврате объекта из функции1.

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

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

□ для локальных объектов — при выходе из блока, в котором они объявлены;

□ для глобальных — как часть процедуры выхода из main;

□ для объектов, заданных через указатели, деструктор вызывается неявно при использовании операции delete.

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

Имя деструктора начинается с тильды (~), непосредственно за которой следует имя класса. Деструктор:

□ не имеет аргументов и возвращаемого значения;

□ не может быть объявлен как const или static;

□ не наследуется;

□ может быть виртуальнымю.

Если деструктор явным образом не определен, компилятор автоматически создаёт пустой деструктор.

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



<== предыдущая лекция | следующая лекция ==>
Понятие класса. | Уровни доступа. Использование дружественных классов.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.555 сек.