Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по программ(мои).doc
Скачиваний:
19
Добавлен:
01.03.2025
Размер:
970 Кб
Скачать
☆

3.Деструкторы: общедоступные, приватные

Дестру́ктор — специальный метод класса, служащий для деинициализации объекта (например освобождения памяти). Практически всегда деструктор делается виртуальным. Делается это для того, чтобы корректно (без утечек памяти) уничтожались объекты не только заданного класса, а и любого производного от него.

Функция‑деструктор разрушает объект данного класса и вызывается явно или неявно. Неявный вызов деструктора связан с прекращением существования объекта из‑за завершения области его определения. Явное уничтожение объекта выполняет оператор delete. Деструктор имеет то же имя, что класс, но предваренное символом ~. Деструкторы не могут получать аргументы и быть перегружены. Класс может объявить только один общедоступный деструктор. Если класс не содержит объявления деструктора, компилятор автоматически создаст его.

Приватный деструктор предназначен для того, чтобы нельзя было явно вызвать деструктор объекта, т.е. служит для предотвращения удаления объекта с помощью оператора delete. Как побочный эффект, такой объект нельзя будет описать в виде обычной автоматической переменной.

class lab11 {

~lab11 (void); // объявление деструктора

};

// определение деструктора

lab11::~lab11 (void)

Билет №14

1.Вычисляемый оператор-переключатель группового выбора switch

Оператор-переключатель switch используется для выбора одного из нескольких путей выполнения программы. Выполнение оператора начинается с вычисления значения, которое идет после switch в скобках. После этого выполняется та часть кода этого оператора, где значение условия совпадет с веткой case. После ветки case обязательно идет оператор break, который обрывает дальнейшее выполнение оператора switch и передает выполнение программы в точку, которая следует сразу после блока switch.

int a=1; int b=100;

switch (a) // вычисляем а = 1

{

case -5: // эта ветка не выполнится, так как 1 не равно -5

b=-5;

break;

case 1: // а эта ветка выполнится, 1 = 1

b=2; // после выполнения этой ветки b присвоится 2

break;

default: // эта ветка выполнится, если ни одна из веток case не выполнилась

b=0;

}

Веток case в операторе switch может быть сколько угодно, а ветка default может опускаться.

2.Классы памяти, область действия объявления

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

auto - автоматический - локальные идентификаторы, память для которых выделяется при входе в блок, т.е. составной оператор, и освобождается при выходе из блока.

static - статический - локал идентиф, существующие в процессе всех выполнений блока. В отличие от auto, для идентифик типа static память выделяется только один раз - в начале выпол программы, и они существуют, пока программа выполняется.

extern - внешний - внешние идентифик, использующ для связи между функциями, даже если те находятся в различных файлах. Память для них является постоянной, но ее содержимое может меняться. Описываются вне функции.

register - регистровый - идентификаторы, подобные идентифик типа auto. Их значения должны помещаться в регистрах машины для обеспечения быстрого доступа к данным.