C++: структуры, переопределение операторов, шаблоны

Содержание

Слайд 2

Что такое структура?

Структура – это пользовательский тип данных, который хранит в себе

Что такое структура? Структура – это пользовательский тип данных, который хранит в
переменные других типов и функции для работы с ними. Создаётся следующим образом: struct ‘имя структуры’ {‘список участников (членов) структуры’}
Переменные, являющиеся членами структуры, называют полями. Поля объявляются как обычные переменные (но в старых стандартах С++ инициализация при объявлении поля не поддерживается). Обращение к полям происходит через точку.
Функции, являющиеся членами структуры, называют методами. Объявление методов ничем не отличается от объявления функции. Из метода есть доступ ко всем полям структуры. Вызов методов происходит через точку.
Конструктор – метод без возвращаемого значения и с именем, совпадающим с именем структуры, который вызывается при создании экземпляра структуры для инициализации полей стартовыми значениями.

Слайд 3

Примеры структуры

Имя структуры

Поля

Конструктор

Конструктор с использованием списков инициализации

Метод

Примеры структуры Имя структуры Поля Конструктор Конструктор с использованием списков инициализации Метод

Слайд 4

Переопределение операторов

Если оператор не работает с нужными вам параметрами, его можно переопределить.
Синтаксически

Переопределение операторов Если оператор не работает с нужными вам параметрами, его можно
переопределение оператора практически не отличается от определения функции: ‘тип возвращаемого значения’ operator’символы операции’ (‘параметры’) {‘тело оператора’}
Тип возвращаемого значения не может быть void.
Количество параметров у оператора определяется его смысловой нагрузкой и является постоянным (у ‘+’ всегда два параметра, у ‘-’ может быть и один, т.к. минус бывает унарным).
При переопределении операторов для собственной структуры стоит использовать ключевое слово friend и переопределять оператор внутри неё, чтобы иметь доступ к закрытым членам структуры.

Слайд 5

Примеры переопределения операторов

Примеры переопределения операторов

Слайд 6

Переопределение операторов потокового ввода и вывода

Требуется #include .
Возвращаемое значение istream& или ostream&

Переопределение операторов потокового ввода и вывода Требуется #include . Возвращаемое значение istream&
имя – operator >> или operator << для ввода или вывода соответственно.
Первый параметр: istream& in или ostream& out.
Второй параметр: ‘тип’& ‘имя’.
В теле оператора ввести/вывести всё необходимое из(в) поток(а) in(out).
Вернуть поток: return in; или return out;

Слайд 7

Пример переопределения операторов потокового ввода и вывода

Пример переопределения операторов потокового ввода и вывода

Слайд 8

Шаблоны

Шаблон — это конструкция, которая создает обычный тип или функцию во время

Шаблоны Шаблон — это конструкция, которая создает обычный тип или функцию во
компиляции на основе аргументов, предоставленных пользователем для параметров шаблона.
Шаблоны служат основанием для универсального программирования на C++. В качестве строго типизированного языка C++ требует, чтобы все переменные имели конкретный тип, либо явно объявленный программистом, либо выведенный компилятором. Однако многие структуры данных и алгоритмы выглядят одинаково независимо от типа, на котором они работают. Шаблоны позволяют определить операции класса или функции и предоставить пользователю указание конкретных типов, с которыми должны работать эти операции.

Слайд 9

Конструкция, задающая шаблон

Строка template <‘параметры шаблона’> указывается перед функцией/структурой, которая будет использовать

Конструкция, задающая шаблон Строка template указывается перед функцией/структурой, которая будет использовать данный
данный шаблон.
В качестве параметров шаблона могут указываться типы, которые следует использовать, или константы. Например: template
Ключевое слово typename позволяет задать T любой примитивный тип данных.
Ключевое слово class позволяет задать С не только примитивные типы данных, но и пользовательские.
Далее при описании функции/структуры вместо конкретных типов данных или определённых констант в рассмотренном примере следует использовать T, C и L.