Структуры
Теоретический материал: с. 67-69.
Структуры в C++ обладают практически теми же возможностями, что и классы, но чаще их применяют просто для логического объединения связанных между собой данных. В структуру, в противоположность массиву, можно объединять данные различных типов.
Например, требуется обрабатывать информацию о расписании работы конференц-зала, и для каждого мероприятия надо знать время, тему, фамилию организатора и количество участников. Поскольку вся эта информация относится к одному событию, логично дать ему имя, чтобы впоследствии можно было к нему обращаться. Для этого описывается новый тип данных (обратите внимание на то, что после описания стоит точка с запятой):
Имя этого типа данных — Event. Можно описать переменные этого типа точно так же, как переменные встроенных типов, например:
Если структура используется только в одном месте программы, можно совместить описание типа с описанием переменных, при этом имя типа можно не указывать:
Переменные структурного типа можно размещать и в динамической области памяти, для этого надо описать указатель на структуру и выделить под нее место:
Элементы структуры называются полями. Поля могут быть любого основного типа массивом, указателем, объединением или структурой. Для обращения к полю используется операция выбора («точка» для переменной и -> для указателя), например:
Структуры одного типа можно присваивать друг другу:
Но присваивание — это и все, что можно делать со структурами целиком. Другие операции, например сравнение на равенство или вывод, не определены. Впрочем, пользователь может задать их самостоятельно, поскольку структура является видом класса, а в классах можно определять собственные операции. Мы рассмотрим эту тему во второй части практикума.
Ввод/вывод структур, как и массивов, выполняется поэлементно. Вот, например как выглядит ввод и вывод описанной выше структуры el с использованием классов ввода-вывода (< iostream.h>):
А вот вариант для любителей ввода-вывода в стиле С (подключается заголовочный файл < stdio.h>):
Структуры (но, конечно, не динамические) можно инициализировать перечислением значений их элементов:
Теперь, когда мы познакомились с основными сведениями о структурах, перейдем к решению задач.
|