HTML Diff
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