Структуры в C++
Один из способов определения пользовательских типов в языке программирования C++ заключается в использовании структур. Способ этот был унаследован еще от языка Си.
Структура -- это производный тип данных, представляющий собой какую-либо конкретную определенную сущность, впрочем, как и класс. В связи с вышесказанным, применительно к языку C++ структуры нередко также называют классами. Говоря по правде, в реальной жизни различия между ними не так уж и велики.
Чтобы определить структуру, применяют ключевое слово struct. Что касается формата определения, то он выглядит так:
При этом
Далее после имени структуры в фигурных скобках помещают
Определение и инициализация
Рассмотрим, как это выглядит на примере. Определим простейшую структуру:
Итак, определена структура person, имеющая 2 элемента: age (тип int) и name (тип string).
После того, как структура определена, ее можно использовать. В начале можно определить объект структуры -- речь идет, по сути, об обычной переменной, которая станет представлять созданный выше тип. Кроме того, после создания переменной структуры мы можем обращаться к ее элементам, получая их значения либо присваивая им новые значения. Чтобы обращаться к элементам структуры, используют операцию "точка":
Опять же, повторимся, что по своей сути структура похожа на класс, что означает, что посредством структур мы тоже можем определять сущности в целях применения их в нашей программе. Одновременно с этим, все члены структуры, для которых не применяется спецификатор доступа (private, public), по дефолту являются открытыми (public). А в классе, как известно, все его члены, для которых спецификатор доступа не указан, являются закрытыми (private).
Идем дальше. У разработчика есть возможность инициализировать структуру путем присвоения ее переменным значений посредством синтаксиса инициализации:
Инициализация структур схожа с инициализацией массивов, для чего в фигурных скобках передают значения для элементов структуры по порядку. При этом, раз в структуре person первым определено свойство, представляющее тип int, то есть число, то и в скобках сначала идет число. Ну и так далее по порядку для всех элементов структуры.
Класс в виде структуры
Следующий момент -- любой класс можно представить в качестве структуры и наоборот. Рассмотрим следующий класс:
Этот класс определяет сущность человека, а также содержит приватные и публичные переменные и функции. Однако для определения этой же сущности мы можем использовать вместо класса структуру:
При этом с точки зрения итогового результата работы программы большой разницы мы увидим.
Когда использовать структуры?
Обычно их используют при описании данных, имеющих лишь набор публичных атрибутов (речь идет об открытых переменных). К примеру, как структура person, определенная в начале статьи. В некоторых случаях такие сущности также называют aggregate classes.
По материалам сайта https://metanit.com/cpp.