Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LektsiiS.doc
Скачиваний:
81
Добавлен:
13.04.2015
Размер:
815.1 Кб
Скачать

13.4 Оператор switch

Оператор switch передает управление одному из нескольких операторов в зависимости от значения выражения. Он имеет вид

switch (выражение) оператор,

где оператор — обычно составной. Тип выражения — арифметический или указатель. Любой оператор в пределах оператора switch можно пометить одной или несколькими метками

case константное_выражение :

Константное_выражение должно быть того же типа, что выражение в операторе switch с точностью до обычных преобразований. Ни одна пара констант в пределах одного оператора switch не должна иметь одинаковое значение. Допускается не более одной метки вида

default :

При выполнении оператора switch выражение вычисляется, и управление передается оператору с соответствующей меткой case. Если ни одна из констант не совпадает со значением выражения и нет метки default, то не выполняется ни один из операторов.

Сами по себе метки case и default не меняют управления, которое просто пропускает эти метки. Для выхода из оператора switch используется оператор break.

П р и м е р.

switch (val){

case 1:

cout<<1;

break;

case 2:

cout<<2;

return;

default:

cout<<0;

}

13.5 Операторы break и continue

Оператор break прерывает выполнение ближайшего оператора цикла или оператора switch, в котором находится. Управление передается оператору, следующему за прерванным оператором.

Оператор continue передает управление в конец того оператора цикла, в котором находится.

13.6 Оператор goto и метки

Оператор

goto метка

передает управление оператору, помеченному меткой. Помеченный оператор имеет вид

метка: оператор.

Меткой может служить любой идентификатор. Метка видна в текущей функции или блоке, за исключением всех субблоков, в которых был объявлен такой же идентификатор. Единственное назначение метки — принимать управление, переданное оператором goto.

Практически единственным разумным применением оператора goto является досрочный выход из вложенных циклов, т.к. break завершает лишь тот цикл, в котором находится.

Вопросы

1. Какие бинарные операторы правоассоциативны?

2. Чем отличается префиксный инкремент от постфиксного?

3. Опишите синтаксис условного выражения.

4. Какие метки допустимы внутри оператора switch?

5. Какой тип выражения допустим внутри оператора switch?

6. Что прерывает оператор break?

7. Какова область видимости метки?

14 Классы

14.1 Определение класса

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

Класс в С++ расширяет понятие структуры и помимо компонентов-данных включает компоненты-функции, которые иначе называют методами.

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

П р и м е р. Класс “дата”. Хранит день, месяц, год. Способен установить дату, сообщить ее, и изменить на следующую.

struct date {

int d,m,y;

void set (int,int,int);

void get (int&,int&,int&);

void next ();

};

Объекты — это экземпляры класса.

void main ( ){

date d;

d.set (18,10,51);

}

Определение функций-компонент можно расположить внутри или за пределами декларации класса. В первом случае транслятор создаст функции inline. Во втором — имени функции должно предшествовать имя класса вместе с операцией разрешения видимости.

Вот как выглядит определение одного из методов класса date, расположенное за пределами декларации класса.

void date::set (int ad, int am, int ay) {

d = ad;

m = am;

y = ay;

}

Объединение (union) как и структура является частным случаем класса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]