- •Федеральное агентство связи
- •«Московский технический университет связи и информатики»
- •Программирование в системах информационной безопасности
- •Перегрузка функций
- •Аргументы функции по умолчанию
- •Определение классов: данные-члены, функции-члены, уровень доступа к членам
- •Статические члены класса
- •Конструкторы
- •Деструктор
- •Порядок вызова конструкторов и деструкторов
- •Передача объектов в функции
- •Дружественные функции и классы
- •Перегрузка операций
- •Функции преобразования
- •Автоматически генерируемые функции-члены
- •Задание
- •Индивидуальные варианты заданий
- •Конструктор копирования и операция присваивания
- •Конструктор перемещения и операция присваивания с перемещением
- •Задание
- •Индивидуальное задание
- •Задание
- •Контрольные вопросы
- •Практикум №11 Шаблонные функции и классы Цель практикума
- •Краткие теоретические сведения
- •Виртуальные функции
- •Чисто виртуальные функции и абстрактные классы
- •Задание
- •Индивидуальное задание
- •Контрольные вопросы
Федеральное агентство связи
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
Кафедра «Информационная безопасность»
ПРАКТИКУМ
по дисциплине
Программирование в системах информационной безопасности
Программирование на языке C++
(для студентов направлений подготовки 11.03.02)
Москва 2017
План УМД на 2017/18 уч. г.
Практикум
по дисциплине
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ СИСТЕМ ЗАЩИТЫ ИНФОРМАЦИИ
Программирование на языке C++
(для студентов направлений подготовки 09.03.01, 10.03.01, 11.03.02)
Составители: Симонян А.Г., к.т.н., доцент (МТУСИ)
Барков В.В., ассистент (МТУСИ)
Рецензент: Шелухин О.И., д.т.н., профессор (МТУСИ)
Издание утверждено на заседании совета факультета ИТ
Протокол № __ от __________ г.
Рекомендовано к изданию кафедрой «ИБ»
Протокол № __ от __________ г.
Раздел 2 Объектно-ориентированное программирование на языке программирования C++
Практикум №8 Понятие класса. Члены класса. Друзья класса. Перегрузка операций
Цель практикума
Научиться создавать простые классы, создавать конструкторы, перегружать операции, создавать объекты классов и передавать их в функции
Краткие теоретические сведения
Динамическое выделение памяти
В языке C++ динамическое выделение памяти осуществляется с помощью операции new, а освобождение с помощью операции delete. Переменной можно задать начальное значение. Операцию new можно использовать также для выделения массива. При этом освобождение памяти осуществляется с помощью операции delete[].
Выделение памяти |
Выделение памяти с инициализацией |
Выделение памяти под массив |
int *a = new int(); // некие действия delete a;
|
int *a = new int(0); // некие действия delete a;
|
int *a = new int[5]; // некие действия delete[] a;
|
Ссылки
В языке C++ также появились типы-ссылки: lvalue и rvalue. Ссылки подобны указателям, однако они не могут работать с динамической памятью и не могут быть изменены после инициализации. Можно считать, что ссылки – это псевдонимы. Ссылки lvalue ссылаются на объекты, а rvalue обычно на временные объекты. Ссылки можно использовать при передаче параметров функции. В таком случае функция сможет изменить значения передаваемых переменных. Ниже представлен пример определения и использования ссылок.
Определение ссылок |
Использование ссылок |
int x = 5; int &a = x; //lvalue ссылка int &&b = x + 5; //rvalue ссылка |
void swap(int &x, int &y) { int temp = x; x = y; y = temp; } |
Однако в таком случае, передать временные объекты в функцию не получится. Для того чтобы это исправить, необходимо сообщить компилятору, что мы не будем изменять передаваемые параметры с использованием ключевого слова const либо передавать параметры с использованием rvalue-ссылок
Передача параметров по ссылке на константный объект |
Передача параметров по rvalue-ссылке |
void f(const int &a, const int &b) { } |
void f(int &&a, int &&b) { } |