- •1. Технологии программирования.
- •1.1 Введение.
- •1.2 Модульное программирование.
- •1.3 Нисходящее программирование.
- •1.4 Структурное программирование.
- •1.5 Понятия объекта, класса объектов.
- •1.6 Основные понятия объектно-ориентированного программирования: инкапсуляция, наследование и полиморфизм.
- •2.1.1 Общие сведения о программах, лексемах и алфавите языка
- •2.1.3. Идентификаторы и служебные слова
- •3. Константы: целые, вещественные (с плавающей точкой), перечислимые, символьные (литерные), строковые (строки или литерные строки)
- •4. Операции. Знаки операций. Унарные, бинарные и тернарные операции. Приоритеты операций.
- •4.1 Знаки операций
- •4.2 Унарные операции
- •4.3 Бинарные операции.
- •4.4 Приоритеты операций
- •5. Переменные. Определения и описания. Спецификатор typedef.
- •5.1 Переменные. Определения и описания.
- •5.2 Класс памяти
- •6. Базовые и производные типы данных. Массивы. Указатели, ссылки и адреса. Структуры. Поля битов. Объединения
- •6.1 Массивы
- •6.2 Указатели, ссылки и адреса объектов
- •6.3 Структуры
- •6.4 Поля битов
- •6.5 Объединения
- •7. Операторы
- •7.1 Оператор выражение
- •7.2 Пустой оператор
- •7.3 Составной оператор
- •7.4 Оператор if
- •If (выражение) оператор-1; [else оператор-2;]
- •7.5 Оператор switch
- •7.6 Оператор break
- •7.7 Оператор for
- •7.8 Оператор while
- •7.9 Оператор do while
- •7.10 Оператор continue
- •7.11 Оператор return
- •7.12 Оператор goto
- •8. Функции
- •8.1 Определения, описания и вызовы функций
- •8.2 Начальные (умалчиваемые) значения параметров.
- •8.3 Функции с переменным количеством параметров
- •8.4 Перегрузка функций.
- •8.5 Ссылки и параметры-ссылки.
- •8.6 Шаблоны функций.
- •Основы ооп
- •9.1 Тип данных - класс.
- •9.2 Доступность компонентов класса
- •9.3 Конструктор и деструктор
- •9.4 Компоненты-данные и компоненты-функции. Статические и константные компоненты класса
- •10. Указатели на компоненты класса
- •10.1 Указатели на компоненты- данные.
- •10.2 Указатели на компоненты- функции.
- •10.3 Указатель this
- •11. Друзья классов
- •11.1 Дружественная функция
- •11.2 Дружественный класс
- •12. Наследование
- •12.1 Определение производного класса.
- •12.2 Конструкторы и деструкторы производных классов
- •13. Полиморфизм
- •13.1 Виртуальные функции.
- •13.2 Абстрактные классы
- •14. Шаблоны классов
- •15. Перегрузка операций
- •15.1 Общие сведения о перегрузке стандартных операций
- •15.2 Перегрузка унарных операций
- •15.3 Перегрузка бинарных операций
- •15.5 Перегрузка операции вызова функции
- •15.6 Перегрузка операции присваивания
- •15.7 Основные правила перегрузки операций.
- •16. Обработка исключительных ситуаций
- •16.1 Операторы try, throw, catch
- •16.2 Универсальный обработчик исключений
- •17. Структура Windows-приложения
- •17.2 Структура каркасного Windows-приложения
- •17.3 Главная функция WinMain()
- •17.4 Сообщения Windows
- •17.5 Класс окна. Регистрация и его характеристики
- •17.6 Создание и показ окна
- •17.7 Цикл обработки сообщений
- •17.8 Оконная функция
- •17.9 Завершение выполнения приложения
- •18. Препроцессор
- •18.1 Общие пpеобpазования
- •18.2 Директивы Препроцессора
- •18.3 Подключаемые файлы
- •18.4. Директива '#include'.
- •18.5 Однократно подключаемые файлы
- •18.6 Макросы
- •18.7 Стрингификация
- •18.8 Объединение
- •18.9 Удаление макросов
- •18.10 Условия
- •19. Разработка Windows приложений с использованием библиотеки классов mfc (microsoft foundation class library)
- •19.1 Некоторые сведения о программировании Windows-приложений
- •19.2 Преимущества использования mfc
- •19.4 Библиотека mfc
- •20. Простейшие mfc-приложения
- •20.1 Приложение без главного окна
- •20.2 Приложение с главным окном
- •20.3 Обработка окном сообщений
4. Операции. Знаки операций. Унарные, бинарные и тернарные операции. Приоритеты операций.
4.1 Знаки операций
Знаки операций обеспечивают формирование и последующее вычисление выражений. Выражение есть правило для получения значения. Один и тот же знак операции может употребляться в различных выражениях и по-разному интерпретироваться в зависимости от контекста. Для изображения операций в большинстве случаев используется несколько символов.
В ANSI-стандарте языка Си определены следующие знаки операций
[] |
() |
. |
-> |
++ |
-- |
& |
* |
+ |
- |
~ |
~ |
sizeof |
/ |
% |
<< |
>> |
< |
> |
<= |
>= |
== |
!= |
^ |
| |
&& |
|| |
?: |
= |
*= |
/= |
%= |
+= |
-= |
<<= |
>>= |
&= |
^= |
|= |
, |
# |
## |
Дополнительно к перечисленным в С++ введены
:: |
.* |
->* |
new |
delete |
typeid |
За исключением операции [], () и ?: все знаки операций распознаются компилятором как отдельные лексемы. В зависимости от контекста одна и та же лексема может обозначать разные операции.
Одним из принципиальных отличий языка Си++ от предшествующего ему языка Си является возможность расширения действия иначе перегрузки (overload) стандартных операций, т.е. распространения их действия на нестандартные для них операнды. Материал, относящийся к расширению действия (перегрузке) операций, будет рассматриваться в следующих главах. Сейчас опишем кратко стандартные возможности отдельных операций.
4.2 Унарные операции
& |
Oперация получения адреса операнда int i; int *i_ptr; i_ptr = &i |
* |
операция обращения по адресу, т.е. раскрытия ссылки, иначе операция разыменования (доступа по адресу к значению того объекта, на который указывает операнд). Операндом должен быть адрес; *i_ptr = 10; // i = 10 |
- |
унарный минус - изменяет знак арифметического операнда; |
+ |
унарный плюс (введен для симметрии с унарным минусом); |
~ |
поразрядное инвертирование внутреннего двоичного кода целочисленного аргумента (побитовое отрицание); |
! |
логическое отрицание (НЕ) значения операнда; применяется к скалярным операндам; целочисленный результат 0 (если операнд ненулевой, т.е. истинный) или 1 (если операнд нулевой, т.е. ложный). В качестве логических значений в языке Си++ используют целые числа: 0 - ложь и не нуль (!0) - истина. Отрицанием любого ненулевого числа будет 0, а отрицанием нуля будет 1. Таким образом: !l равно 0; !2 равно 0; !(-5) равно 0; !0 равно 1; |
++ |
увеличение на единицу (инкремент или автоувеличение): префиксная операция - увеличение значения операнда на 1 до его использования; постфиксная операция - увеличение значения операнда на 1 после его использования. Операнд не может быть константой либо другим праводопустимым выражением. Записи ++5 или 84++ будут неверными. Операндом не может быть и произвольное выражение. Например, ++(j+k) также неверная запись. Операндом унарных операций ++ и — должны быть всегда леводопустимые выражения, например, переменные разных типов); |
-- |
уменьшение на единицу (декремент или автоуменьшение). Правила применения такие же как и для операции ++ |
sizeof |
операция вычисления размера (в байтах) для объекта того типа, который имеет операнд. Разрешены два формата операции: sizeof унарное_выражение sizeof (тип) |