
- •Абстрактные классы.
- •Аргументы функций по умолчанию.
- •Арифметические операции с указателями и с указателями на массивы.
- •Ввод-вывод в символьные массивы.
- •Виртуальные классы. Порядок вызова конструкторов и деструкторов.
- •Виртуальные функции.
- •Виртуальные функции-члены.
- •Виртуальный деструктор. Абстрактные классы.
- •Динамическая память. Указатели и массивы. Ссылочный тип.
- •Доступ к глобальным переменным, скрытым локальными переменными с тем же именем (оператор ::).
- •Доступ к членам базовых классов внутри производного класса.
- •Доступ к элементам массива. Вычисление размера массива. Многомерные массивы.
- •Дружественные классы и функции.
- •Закрытые, защищенные и открытые элементы класса.
- •Иерархия классов. Иерархия наследования классов.
- •Инициализация и разрушение (конструкторы и деструкторы).
- •Инициализация массивов по умолчанию. Явная инициализация массивов.
- •Инициализация безразмерных массивов
- •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 ("пока") с постусловием
69. Приведите пример использования виртуальных функций
Виртуальные функции придают объекту производного класса способность модифицировать поведение, определенное на уровне базового класса (или предоставить какие-то возможности, в которых базовый класс испытывал потребность, но не мог их реализовать обычно из-за того, что информация, нужная для этой реализации, объявляется на уровне производного класса). Виртуальные функции являются центральными для объектно-ориентированного проектирования, потому что они позволяют вам определить базовый класс общего назначения, не требуя знания особенностей, которые могут быть предусмотрены лишь производным классом.
Если базовый класс base содержит (виртуальную) virtual
функцию vf, а производный класс derived также содержит
Язык программирования С++
141
функцию vf, то вызов vf для объекта класса derived вызывает
derived::vf.
Например:
struct base
{
virtual void vf ();
void f ();
};
struct derived : public base
{
void vf ();
void f ();
};
derived d;
base* bp = &d;
bp_>vf ();
bp_>f ();
Вызовы вызывают, соответственно, derived::vf и base::f для
объекта класса derived, именованного d. Так что интерпретация
вызова виртуальной функции зависит от типа объекта, для
которого она вызвана, в то время как интерпретация вызова
невиртуальной функции зависит только от типа указателя,
обозначающего объект.
70. Приведите пример использования вызова функций по значению и вызов по ссылке.
Для вызова функции укажите имя функции и в круглых скобках перечислите через запятую параметры. Если параметров нет, то ставятся пустые скобки. Если функция или метод возвращают значение, то их можно использовать внутри выражения. Вызов метода выполняется по аналогии взятия поля и вызова функции, после переменной содержащей структуру ставиться точка, затем имя метода и в скобках параметры
a = my.mymethod( myfunc( a, b + c ))
a = b->mystruct.mymethod( d )
Вызов функции по адресу
В переменной типа uint может храниться адрес (идентификатор) функции. Для вызова функции по ее идентификатору используется операция ->func и далее в скобках перечисляются параметры. В этом случае следует следить за количеством параметров и их типами, так как компилятор не может проверить совпадение параметров. Таким образом можно вызывать не только функции, но и методы и операторы.
a = &myfunc
a->func( c, d )
Ниже приведен пример , в котором используются: вызов функции в заголовке оператора for
int start() // Описание функции start()
{ // Начало тела ф-ии start()
int n; // Объявление переменной
int T=15; // Заданное время
for(int i=Func_yes_ret(T);i<=10;i++) // Использование функции в..
//.заголовке оператора цикла
{ // Начало тела цикла for
n=n+1; // Счётчик итераций
Alert ("Итерация n=",n," i=",i); // Оператор вызова функции
} // Конец тела цикла for
return; // Выход из функции start()
} // Конец тела ф-ии start()
//--------------------------------------------------------------------
int Func_yes_ret (int Times_in) // Описание пользоват. ф-ии
{ // Начало тела польз. ф-ии
datetime T_cur=TimeCurrent(); // Использование функции в..
// ..операторе присваивания
if(TimeHour(T_cur) > Times_in) // Использование функции в..
//..заголовке операт.if-else
return(1); // Возврат значения 1
return(5); // Возврат значения 5
}