Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.docx
Скачиваний:
14
Добавлен:
23.03.2015
Размер:
63.56 Кб
Скачать

Доступ к элементам структуры

Для доступа к элементам структуры или класса используется операция доступа к элементам - операция «точка» и «стрелка». Первая обращается к элементам структуры по имени переменной объекта или по ссылке на объект.

Чтобы нпечетать hour:

cout<<timeObject.hour;

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

Адрес структуры timeObject Был уже присвоен timePtr, тогда чтобы напечатать hour:

cout<<timePtr->hour;

оперция точка имеет более высокий приоритет, чем указатель(*). Операции наряду с круглыми или квадратными скобками имеют второй приоритет, после разрешения области действия и ассоциативности слева направо.

Область действия класса

Данные-элементы класса (переменные, объявленные в определении клас­са) и функции-элементы (функции, объявленные в определении класса) имеют областью действия класс. Функции, не являющиеся элементом класса, имеют областью действия файл

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

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

Поразрядные операции

Число 7 в двоичном представлении выглядит так: 00000111.

При применении оператора сдвига >>1 значит, что двоичную запись сдвинули на один бит вправо.

(что аналогично целочисленному делению на 2).

Получили 00000011 (правая единичка потерялась).

Это соответствует числу 3 в двоичном представлении.

получили 7/2=3.

Операция сдвига выполняется быстрее чем обычное деление/умножение, соответственно её использование выгоднее. Правда, это не всегда заметно, но всё-таки, при больших входных данных смысл использовать есть.

&&

Поразрядное И

Бит результата устанавливается в 1, если соответствующие биты обоих операндов равны 1

||

Поразрядное ИЛИ

1, если бит хотя бы одного операнда равен 1

^

Поразрядное ИСКЛЮЧАЮЩЕЕ ИЛИ

1, если бит одного и только одного операнда=1

~

Поразрядное НЕ

Меняет 1 на 0 и наоборот

<<

Поразрядный сдвиг влево

Сдвигает биты первого операнда влево на количество позиций, заданных вторым операндом. При этом освобождающиеся справа биты заполняются нулями

>>

Поразрядный сдвиг вправо

Сдвигает биты первого операнда вправо на количество позиций, заданных вторым операндом. При этом освобождающиеся слева биты заполняются нулями

1. 01001010 << 3 = 01010000

2.10010010 >> 4 = 00001001

3.10010010 & 10010010 =10010010

4.00110010&11011010 = 00010010

5. 10010010 | 10010010 = 10010010

6. 00110010 |11011010 = 11111010

7.10010010^10010010=00000000

8.00110010^11011010=11101000