0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Один из способов определения пользовательских типов в языке программирования C++ заключается в использовании структур. Способ этот был унаследован еще от языка Си.</p>
1
<p>Один из способов определения пользовательских типов в языке программирования C++ заключается в использовании структур. Способ этот был унаследован еще от языка Си.</p>
2
<p>Структура -- это производный тип данных, представляющий собой какую-либо конкретную определенную сущность, впрочем, как и класс. В связи с вышесказанным, применительно к языку C++ структуры нередко также называют классами. Говоря по правде, в реальной жизни различия между ними не так уж и велики.</p>
2
<p>Структура -- это производный тип данных, представляющий собой какую-либо конкретную определенную сущность, впрочем, как и класс. В связи с вышесказанным, применительно к языку C++ структуры нередко также называют классами. Говоря по правде, в реальной жизни различия между ними не так уж и велики.</p>
3
<p>Чтобы определить структуру, применяют ключевое слово<strong>struct</strong>. Что касается формата определения, то он выглядит так:</p>
3
<p>Чтобы определить структуру, применяют ключевое слово<strong>struct</strong>. Что касается формата определения, то он выглядит так:</p>
4
<p>При этом Имя_структуры -- это произвольный идентификатор, к которому применимы такие же правила, как и к наименованию переменных.</p>
4
<p>При этом Имя_структуры -- это произвольный идентификатор, к которому применимы такие же правила, как и к наименованию переменных.</p>
5
<p>Далее после имени структуры в фигурных скобках помещают Компоненты_структуры -- набор описаний объектов и функций, составляющих эту структуру.</p>
5
<p>Далее после имени структуры в фигурных скобках помещают Компоненты_структуры -- набор описаний объектов и функций, составляющих эту структуру.</p>
6
<h3>Определение и инициализация</h3>
6
<h3>Определение и инициализация</h3>
7
<p>Рассмотрим, как это выглядит на примере. Определим простейшую структуру:</p>
7
<p>Рассмотрим, как это выглядит на примере. Определим простейшую структуру:</p>
8
<p>Итак, определена структура<strong>person</strong>, имеющая 2 элемента:<strong>age</strong>(тип int) и<strong>name</strong>(тип string).</p>
8
<p>Итак, определена структура<strong>person</strong>, имеющая 2 элемента:<strong>age</strong>(тип int) и<strong>name</strong>(тип string).</p>
9
<p>После того, как структура определена, ее можно использовать. В начале можно определить объект структуры -- речь идет, по сути, об обычной переменной, которая станет представлять созданный выше тип. Кроме того, после создания переменной структуры мы можем обращаться к ее элементам, получая их значения либо присваивая им новые значения. Чтобы обращаться к элементам структуры, используют операцию "точка":</p>
9
<p>После того, как структура определена, ее можно использовать. В начале можно определить объект структуры -- речь идет, по сути, об обычной переменной, которая станет представлять созданный выше тип. Кроме того, после создания переменной структуры мы можем обращаться к ее элементам, получая их значения либо присваивая им новые значения. Чтобы обращаться к элементам структуры, используют операцию "точка":</p>
10
<p>Опять же, повторимся, что по своей сути структура похожа на класс, что означает, что посредством структур мы тоже можем определять сущности в целях применения их в нашей программе. Одновременно с этим, все члены структуры, для которых не применяется спецификатор доступа (<strong>private</strong>,<strong>public</strong>), по дефолту являются открытыми (<strong>public</strong>). А в классе, как известно, все его члены, для которых спецификатор доступа не указан, являются закрытыми (<strong>private</strong>).</p>
10
<p>Опять же, повторимся, что по своей сути структура похожа на класс, что означает, что посредством структур мы тоже можем определять сущности в целях применения их в нашей программе. Одновременно с этим, все члены структуры, для которых не применяется спецификатор доступа (<strong>private</strong>,<strong>public</strong>), по дефолту являются открытыми (<strong>public</strong>). А в классе, как известно, все его члены, для которых спецификатор доступа не указан, являются закрытыми (<strong>private</strong>).</p>
11
<p>Идем дальше. У разработчика есть возможность инициализировать структуру путем присвоения ее переменным значений посредством<strong>синтаксиса инициализации</strong>:</p>
11
<p>Идем дальше. У разработчика есть возможность инициализировать структуру путем присвоения ее переменным значений посредством<strong>синтаксиса инициализации</strong>:</p>
12
<p>Инициализация структур схожа с инициализацией массивов, для чего в фигурных скобках передают значения для элементов структуры по порядку. При этом, раз в структуре<strong>person</strong>первым определено свойство, представляющее тип int, то есть число, то и в скобках сначала идет число. Ну и так далее по порядку для всех элементов структуры.</p>
12
<p>Инициализация структур схожа с инициализацией массивов, для чего в фигурных скобках передают значения для элементов структуры по порядку. При этом, раз в структуре<strong>person</strong>первым определено свойство, представляющее тип int, то есть число, то и в скобках сначала идет число. Ну и так далее по порядку для всех элементов структуры.</p>
13
<h3>Класс в виде структуры</h3>
13
<h3>Класс в виде структуры</h3>
14
<p>Следующий момент -- любой класс можно представить в качестве структуры и наоборот. Рассмотрим следующий класс:</p>
14
<p>Следующий момент -- любой класс можно представить в качестве структуры и наоборот. Рассмотрим следующий класс:</p>
15
<p>Этот класс определяет сущность человека, а также содержит приватные и публичные переменные и функции. Однако для определения этой же сущности мы можем использовать вместо класса структуру:</p>
15
<p>Этот класс определяет сущность человека, а также содержит приватные и публичные переменные и функции. Однако для определения этой же сущности мы можем использовать вместо класса структуру:</p>
16
<p>При этом с точки зрения итогового результата работы программы большой разницы мы увидим.</p>
16
<p>При этом с точки зрения итогового результата работы программы большой разницы мы увидим.</p>
17
<h3>Когда использовать структуры?</h3>
17
<h3>Когда использовать структуры?</h3>
18
<p>Обычно их используют при описании данных, имеющих лишь набор публичных атрибутов (речь идет об открытых переменных). К примеру, как структура<strong>person</strong>, определенная в начале статьи. В некоторых случаях такие сущности также называют<strong>aggregate classes</strong>.</p>
18
<p>Обычно их используют при описании данных, имеющих лишь набор публичных атрибутов (речь идет об открытых переменных). К примеру, как структура<strong>person</strong>, определенная в начале статьи. В некоторых случаях такие сущности также называют<strong>aggregate classes</strong>.</p>
19
<p><em>По материалам сайта<a>https://metanit.com/cpp</a>.</em></p>
19
<p><em>По материалам сайта<a>https://metanit.com/cpp</a>.</em></p>
20
20