русс | укр

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

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

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

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


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

Создание экземпляров класса. Конструктор


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


 

Экземпляры класса создаются в стековой памяти с помощью специальной компонентной функции класса – конструктора.

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

В теле конструктора могут быть любые операторы, в том числе и вызовы функций. Конструктор не наследуется, не может быть объявлен с атрибутами const, volatile или static и не может быть объявлен как виртуальный.

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

Явно определенный в классе конструктор может быть с параметрами и без параметров. Определение конструктора имеет вид:

имя_класса( список_параметров ) { тело }

имя_класса() { тело }.

В первом случае значениями параметров в теле конструктора инициализируются элементы-данные класса. Во втором случае инициализация осуществляется значениями, заданными в теле конструктора. Если конструктор генерируется по умолчанию, то инициализация осуществляется нулевыми значениями.

При явном определении конструктора элементы-данные могут инициализироваться двумя способами:

- индивидуальным присвоением значений компонентным данным в теле конструктора;

- использованием списка инициализации данных в заголовке конструктора

Пример:

а) class Time

{ inthr, min;

public: Time (int h) {hr = h; min = 0;} // первый способ

Time (int h, int m): hr(h), min(m){} // второй способ

};

voidmain(){

Time start1(17);



Time start(17,45);

}

б) classTime { // комбинация двух способов

int min; const int hr;

public:

Time (int h, int m): hr(h) {min = m;}

};

Список инициализации является единственным средством присвоения значений элементам-данным класса, объявленным как const или как ссылки.

Для вызова конструктора используется следующие синтаксические формы:

имя_класса имя_объекта;

имя_класса имя_объекта(аргументы);

имя_класса(аргументы);

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

Пример:

myclass ob1;

myclass ob1(4);

myclass ob1 = myclass(4); //автоматически вызывается конструктор копии.

myclass *ob2 =new myclass(4);

 



<== предыдущая лекция | следующая лекция ==>
Доступ к элементам класса (объекта) | Создание объекта в динамической памяти


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


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

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

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


 


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

 
 

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

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