Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Топ:
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Интересное:
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Дисциплины:
2018-01-03 | 239 |
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. Таким образом, разрушение объектов деструктором выполняется в порядке обратном их созданию конструктором.
|
|
|
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!