Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Топ:
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Интересное:
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Объекты классов с конструкторами могут быть инициализированы следующими способами.
Первый – при помощи задаваемого в круглых скобках списка выражений, который используется как список передаваемых конструктору аргументов.
Второй – использование знака присваивания (=), за которым следует отдельное значение. Оно может иметь тип первого аргумента, принимаемого конструктором данного класса, в этом случае дополнительных аргументов либо не существует, либо они имеют значения по умолчанию. В этом случае для создания объекта вызывается соответствующий конструктор. Значение может также являться объектом данного типа класса. В таком случае вызывается конструктор копирования, инициализирующий объект.
Пример 11.
Демонстрация работы конструктора и деструктора в программе.
#include<iostream.h>
#include<conio.h>
class Number // описание класса
{ int i; // элемент private
public: // прототипы методов класса
Number (int j); // объявление конструктора
~Number(); // объявление деструктора
void show(); // вывод на экран
};
Number:: Number (int i) // заголовок конструктора
{ i=j; // инициализация элемента данных класса
cout<<"Работает конструктор: i="<< i <<'\n';
}
Number:: ~Number() // заголовок деструктора
{ cout<<"Работает деструктор: i="<< i <<'\n';
}
void Number:: show() // метод вывода данных на экран
{ cout<<"i= "<< i <<'\n';
}
void main() // главная функция
{ clrscr(); // чистка экрана результатов
Number ob1(25); // вызов конструктора и создание объектов
Number ob2(5);
cout<<"Вывод из объекта ob1: ";
ob1.show(); // вывод данных объекта
cout<<"Вывод из объекта ob2: ";
ob2.show();
}
Результаты программы:
Работает конструктор: i=25
Работает конструктор: i=5
Вывод из объекта ob1: i=25
Вывод из объекта ob1: i=5
Работает деструктор
Работает деструктор
Объекты класса могут объявляться (значит, и создаваться) сразу после описания класса до точки с запятой. Конструктор может иметь любое число параметров. Например, он может принимать в качестве аргумента имя самого объекта.
Пример 12.
Демонстрация работы программы с объектом, созданным встроенным конструктором до начала действий функции main(). Имя объекта является параметром конструктора. Показан порядок конструирования объектов и разрушения встроенным деструктором.
#include<iostream.h>
#include<conio.h>
class Number1 // описание класса
{ char *str; // указатель на строку
public:
Number1 (char *name) // встроенный конструктор
{ cout<<"Создан объект с именем " <<name<<" класса Number1\n";
str = name; // присваивание имени элементу str класса
}
~Number1 // встроенный деструктор
{ cout<< "Объект " << str <<" разрушен\n";
}
} one ("one"); // создание объекта one с инициализацией
void main()
{ // clrscr(); // после чистки экрана не виден объект one
Nimber1 two (two); // вызов конструктора для объекта two
// getch(); // при задержке не видно работы деструктора
}
Результаты программы:
Создан объект с именем one класса Number1
Создан объект с именем two класса Number1
Объект two разрушен
Объект one разрушен
Комментарий к программе.
Для статических объектов память распределяется компилятором: конструктор вызывается перед main, а деструктор – после main. Если конструктор не определен, С++ использует неявный или встроенный. В случае автоматических объектов освобождение памяти происходит, когда нарушается область действия (заканчивается включающий блок). Любой определенный программистом деструктор вызывается, когда уничтожаются статические или автоматические объекты.
В примере компилятор автоматически вызвал конструктор при входе в программу для создания элемента локального статического объекта one. При создании автоматического объекта two конструктор был вызван явно. При выходе из функции main() завершается область определения объекта two и компилятор неявно вызывает деструктор. Второй раз деструктор вызывается при завершении всей программы для разрушения объекта one. Таким образом, разрушение объектов деструктором выполняется в порядке обратном их созданию конструктором.
|
|
|
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!