Структуры в C++

Один из способов определения пользовательских типов в языке программирования C++ заключается в использовании структур. Способ этот был унаследован еще от языка Си.

Структура -- это производный тип данных, представляющий собой какую-либо конкретную определенную сущность, впрочем, как и класс. В связи с вышесказанным, применительно к языку C++ структуры нередко также называют классами. Говоря по правде, в реальной жизни различия между ними не так уж и велики.

Чтобы определить структуру, применяют ключевое слово struct. Что касается формата определения, то он выглядит так:

При этом Имя_структуры -- это произвольный идентификатор, к которому применимы такие же правила, как и к наименованию переменных.

Далее после имени структуры в фигурных скобках помещают Компоненты_структуры -- набор описаний объектов и функций, составляющих эту структуру.

Определение и инициализация

Рассмотрим, как это выглядит на примере. Определим простейшую структуру:

Итак, определена структура person, имеющая 2 элемента: age (тип int) и name (тип string).

После того, как структура определена, ее можно использовать. В начале можно определить объект структуры -- речь идет, по сути, об обычной переменной, которая станет представлять созданный выше тип. Кроме того, после создания переменной структуры мы можем обращаться к ее элементам, получая их значения либо присваивая им новые значения. Чтобы обращаться к элементам структуры, используют операцию "точка":

Опять же, повторимся, что по своей сути структура похожа на класс, что означает, что посредством структур мы тоже можем определять сущности в целях применения их в нашей программе. Одновременно с этим, все члены структуры, для которых не применяется спецификатор доступа (private, public), по дефолту являются открытыми (public). А в классе, как известно, все его члены, для которых спецификатор доступа не указан, являются закрытыми (private).

Идем дальше. У разработчика есть возможность инициализировать структуру путем присвоения ее переменным значений посредством синтаксиса инициализации:

Инициализация структур схожа с инициализацией массивов, для чего в фигурных скобках передают значения для элементов структуры по порядку. При этом, раз в структуре person первым определено свойство, представляющее тип int, то есть число, то и в скобках сначала идет число. Ну и так далее по порядку для всех элементов структуры.

Класс в виде структуры

Следующий момент -- любой класс можно представить в качестве структуры и наоборот. Рассмотрим следующий класс:

Этот класс определяет сущность человека, а также содержит приватные и публичные переменные и функции. Однако для определения этой же сущности мы можем использовать вместо класса структуру:

При этом с точки зрения итогового результата работы программы большой разницы мы увидим.

Когда использовать структуры?

Обычно их используют при описании данных, имеющих лишь набор публичных атрибутов (речь идет об открытых переменных). К примеру, как структура person, определенная в начале статьи. В некоторых случаях такие сущности также называют aggregate classes.

По материалам сайта https://metanit.com/cpp.

Запланируй обучение с выгодой!
Празднуем день программиста вместе! 10% скидка от Otus на курсы! →