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

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

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

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

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

1-1801-b24ba1.png

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

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

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

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

2-1801-1ed4b1.png

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

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

3-1801-a82f30.png

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

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

4-1801-f0fd46.png

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

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

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

6-1801-301c1c.png

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

7-1801-265dab.png

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

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

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

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

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто
🔥 Выгодные предложения!
Успейте начать обучение со скидкой до 10%. Акция до 31 июля →