
- •Абстрактные классы.
- •Аргументы функций по умолчанию.
- •Арифметические операции с указателями и с указателями на массивы.
- •Ввод-вывод в символьные массивы.
- •Виртуальные классы. Порядок вызова конструкторов и деструкторов.
- •Виртуальные функции.
- •Виртуальные функции-члены.
- •Виртуальный деструктор. Абстрактные классы.
- •Динамическая память. Указатели и массивы. Ссылочный тип.
- •Доступ к глобальным переменным, скрытым локальными переменными с тем же именем (оператор ::).
- •Доступ к членам базовых классов внутри производного класса.
- •Доступ к элементам массива. Вычисление размера массива. Многомерные массивы.
- •Дружественные классы и функции.
- •Закрытые, защищенные и открытые элементы класса.
- •Иерархия классов. Иерархия наследования классов.
- •Инициализация и разрушение (конструкторы и деструкторы).
- •Инициализация массивов по умолчанию. Явная инициализация массивов.
- •Инициализация безразмерных массивов
- •1. Инкапсуляция
- •2. Полиморфизм
- •3. Наследовние
- •22.Использование new и delete на примере динамических массивов, стеков, очередей.
- •Указатель this
- •Указатели на структуру
- •Массивы структур
- •Классы и объекты. Класс как структура.
- •Классы. Спецификаторы доступа public, protected, private.
- •Константные (const) и изменяемые (mutable) члены класса.
- •Конструктор копирования для контейнерного класса.
- •Конструкторы и деструкторы.
- •Конструкторы и способы обращения к ним.
- •Логические операции. Инкремент и декремент. Арифметические операции.
- •Объявление переменной массива
- •Множественное наследование.
- •Модификатор константы. Модификатор volatile. Модификатор const
- •Модификатор volatile
- •Модификатор const
- •Модификатор volatile
- •Объединения: синтаксис и правила.
- •Объединения: создание простого объединения. Использование enum.
- •41. Объекты стандартного предопределенного потокового ввода-вывода cin, cout, cerr, clog.
- •Объявление переменных указателей. Простые операторы с указателями.
- •Оператор if. Оператор if-else. Вложенные операторы if-else. Оператор if-else-if.
- •If (условие_истинно) оператор; else оператор;
- •If (условие_истинно)
- •Операторы динамического распределения памяти (new, delete).
- •Операции динамического распределения памяти.
- •Операции отношения и логические операции. Условная операция. Операции сравнения (Операции отношений)
- •Логические операции.
- •Операция присваивания. Приоритет операций.
- •Определение первичного класса.
- •Определение переменных указателей. Инициализация указателей.
- •Организация списка объектов различного типа. Техническая реализация
- •Параметризованная очередь. Параметризованный стек. Параметризованное бинарное дерево.
- •Int max_len; /* Максимальная длина стека */
- •Int top; /* Индекс элемента в вершине стека */
- •Параметризованный класс двухсвязного списка.
- •58. Перегрузка операций
- •59. Перегрузка для труктур
- •Передача значений параметров по умолчанию. Передача параметров по ссылке и ссылочные переменные.
- •Передача параметра по ссылке
- •Передача структур в функции. Создание массива структур.
- •63. Подставляемые функции (inline-функции).
- •Преобразования указателей на объекты
- •65. Приведите пример использования enum.
- •66. Приведите пример использования inline-функции.
- •67. Приведите пример использования аргументов функций по умолчанию.
- •68. Приведите пример использования арифметических операции с указателями.
- •69. Приведите пример использования виртуальных функций
- •70. Приведите пример использования вызова функций по значению и вызов по ссылке.
- •71. Приведите пример использования дружественных функции.
- •72. Приведите пример использования конструкторов и деструктора.
- •73.Приведите пример использования массива структур.
- •Приведите пример использования перегрузки функций.
- •81. Приведите пример использования указателей и массивов.
- •82. Приведите пример использования условного оператора
- •83.Приведите пример использования циклов for, while, do-while.
- •84. Приведите пример использования шаблонов функций.
- •Принципы организации позднего связывания.
- •Приоритет переменных с файловой и локальной областями действия. Операция уточнения области действия.
- •Производные классы. Доступ к полям и функциям базового класса.
- •88. Простой класс. Вложенные классы
- •Пространство имен. Операторы namespace и using. Пространство имен
- •Прототипы функций. Вызов функций по значению и вызов по ссылке. Область действия. Рекурсия.
- •91.Работа с файлами последовательного и произвольного доступа.
- •92.92.Переменные
- •Где объявляются переменные
- •Локальные переменные
- •Вопрос 95
- •96 Соглашения об именах
- •Тело класса и составные функции.
- •Указатели на массивы. Указатели на строки.
- •Использование указателя на символьную строку
- •Условный оператор. Оператор switch.
- •Формальные и фактические параметры. Массивы в качестве параметров. Аргумент типа void.
- •Способ передачи параметров в подпрограмму
- •110.Циклы for. Циклы while. Циклы do-while. Разница между циклами.
- •Цикл while ("пока") с постусловием
Тело класса и составные функции.
Класс – это производный структурированный тип, определяемый пользователем на
основе уже существующих базовых типов. Механизм классов позволяет создавать
типы в полном соответствии с принципами абстракции данных, т.е. класс задает
некоторую структурированную совокупность типизированных данных и позволяет
определить набор операций над этими данными.
Класс можно определить с помощью инструкции объявления:
ключ_класса имя_класса {
компоненты_класса
};
где ключ_класса – одно из ключевых слов class, struct, union; имя_класса –
произвольно выбираемый идентификатор; компоненты_класса – объявления
типизированных данных и принадлежащих классу функций. Компонентами класса
могут быть данные, функции, вложенные классы, перечисления, битовые поля,
дружественные функции, дружественные классы и имена типов.
Для доступа к компонентам класса, например, можно использовать имя_класса в
качестве квалификатора:
квалификация без указания имени объекта (полная квалификация)
имя_класса::имя_компонента_класса
квалификация с указанием имени объекта
имя_объекта .имя_класса::имя_компонента_класса
Квалификатор имя_класса вместе с оператором разрешения области видимости ::
могут быть опущены, тогда для доступа к компонентам объекта класса, например,
можно использовать уточненные имена:
имя_объекта .имя_компонента_данных
имя_объекта .имя_компонентной_функции(список_аргументов_вызова)
Тело функции — это просто составной оператор. Составной оператор содержит операторы, которые определяют действия функции, и может также содержать объявления переменных,
используемых в этих операторах. Все переменные, объявленные в теле функции, имеют тип памяти auto, если они не объявлены иначе. Когда вызывается функция, то создается память для
локальных переменных и производится их инициализация (если
она задана). Управление передается первому оператору
составного оператора и начинается процесс выполнения,
который продолжается до тех пор, пока не встретится оператор
return или конец тела функции. Управление при этом
возвращается в точку вызова.
Если функция возвращает значение, то должен быть
выполнен оператор return, содержащий выражение.
Значение возврата не определено, если не выполнен
оператор return или если в оператор return не было включено
выражение.
Указатели на массивы. Указатели на строки.
Указатели - это переменные, которые содержат адрес адреса данных. В С++ указатели могут быть на любой тип данных.
Если необходимо, можно описать массив указателей.
int*ip[ 10 ];
массив указателей на целые значения из 10 элементов.
С указателем можно производить некоторые арифметические операции. Например, при работе с массивами.
Пусть sub содержит номер элемента массива, тогда до этого элемента можно "добраться"
mas [ sub ]
или
*(mas +sub)
Т.к. имя массива фактически является указателем на нулевой элемент массива. Переменная sub указывает на сколько элементов необходимо сместиться. Вы можете инкрементировать и декрементировать указатель. При этом вы смещаетесь на один элемент, независимо от типа элемента.
Допустим uk адрес нулевого элемента массива, тогда
cout<<*uk; // вывод значения 0-го элемента
uk++;
cout<<*uk; // вывод значения 1-го элемента, реально смещение на несколько байтов
uk+=2
cout<<*uk; // вывод значения 3-го элемента.
Наиболее полезное применение массивов указателей - это массив указателей на строки.
Пример.
char names [3] [20]= {
{"Иванов"},
{"Петров"},
{"Сидоров "}
};
Схематично можно изобразить следующим образом
Рисунок 1.7.2.
Для вывода строки можно использовать
cout<< *names; //Печать Иванов