struct (C++)struct (C++)

struct Ключевое слово определяет тип структуры и (или) переменную типа структуры.The struct keyword defines a structure type and/or a variable of a structure type.

СинтаксисSyntax

[template-spec] struct [ms-decl-spec] [tag [: base-list ]]
{
   member-list
} [declarators];
[struct] tag declarators;

ПараметрыParameters

Спецификация шаблонаtemplate-spec
Необязательные спецификации шаблона.Optional template specifications. Дополнительные сведения см. в разделе спецификации шаблонов.For more information, refer to Template Specifications.

structstruct
struct Ключевое слово.The struct keyword.

MS-decl-Specms-decl-spec
Необязательная спецификация класса хранения.Optional storage-class specification. Дополнительные сведения см. в разделе ключевое слово __declspec .For more information, refer to the __declspec keyword.

тегtag
Имя типа, присваиваемое структуре.The type name given to the structure. Тег становится зарезервированным ключевым словом в области структуры.The tag becomes a reserved word within the scope of the structure. Тег является необязательным.The tag is optional. Если он опущен, определяется анонимная структура.If omitted, an anonymous structure is defined. Дополнительные сведения см. в разделе типы анонимных классов.For more information, see Anonymous Class Types.

base-listbase-list
Необязательный список классов или структур, из которых эта структура будет наследовать члены.Optional list of classes or structures this structure will derive its members from. Дополнительные сведения см. в разделе базовые классы .See Base Classes for more information. Каждому базовому классу или имени структуры может предшествовать спецификатор доступа (открытый, частный, защищенный) и ключевое слово Virtual .Each base class or structure name can be preceded by an access specifier (public, private, protected) and the virtual keyword. Дополнительные сведения см. в таблице доступ к элементам в разделе Управление доступом к членам класса .See the member-access table in Controlling Access to Class Members for more information.

Список участниковmember-list
Список членов структуры.List of structure members. Дополнительные сведения см. в разделе Обзор членов класса .Refer to Class Member Overview for more information. Единственное отличие заключается в том, что struct используется вместо class .The only difference here is that struct is used in place of class.

declaratorsdeclarators
Список деклараторов, указывающий имена структуры.Declarator list specifying the names of the structure. В списках деклараторов объявляются один или несколько экземпляров типа структуры.Declarator lists declare one or more instances of the structure type. Деклараторы могут включать списки инициализаторов, если все элементы данных структуры имеют значение public .Declarators may include initializer lists if all data members of the structure are public. Списки инициализаторов являются общими в структурах, так как элементы данных public по умолчанию имеют значение.Initializer lists are common in structures because data members are public by default. Дополнительные сведения см. в разделе Общие сведения об деклараторах .See Overview of Declarators for more information.

RemarksRemarks

Тип структуры — это пользовательский составной тип.A structure type is a user-defined composite type. Он состоит из полей или членов, которые могут иметь разные типы.It is composed of fields or members that can have different types.

В C++ структура является такой же, как и класс, за исключением того, что ее члены по public умолчанию имеют значение.In C++, a structure is the same as a class except that its members are public by default.

Сведения об управляемых классах и структурах в C++/CLI см. в разделе классы и структуры.For information on managed classes and structs in C++/CLI, see Classes and Structs.

Использование структурыUsing a Structure

В языке C struct для объявления структуры необходимо явно использовать ключевое слово.In C, you must explicitly use the struct keyword to declare a structure. В C++ не нужно использовать struct ключевое слово после определения типа.In C++, you do not need to use the struct keyword after the type has been defined.

Если тип структуры определен путем размещения одной или нескольких разделенных запятыми имен переменных между закрывающей фигурной скобкой и точкой с запятой, имеется возможность объявления переменных.You have the option of declaring variables when the structure type is defined by placing one or more comma-separated variable names between the closing brace and the semicolon.

Переменные структуры можно инициализировать.Structure variables can be initialized. Инициализация каждой переменной должна быть заключена в скобки.The initialization for each variable must be enclosed in braces.

Связанные сведения см. в разделе класс, объединениеи перечисление.For related information, see class, union, and enum.

ПримерExample

#include <iostream>
using namespace std;

struct PERSON {   // Declare PERSON struct type
    int age;   // Declare member types
    long ss;
    float weight;
    char name[25];
} family_member;   // Define object of type PERSON

struct CELL {   // Declare CELL bit field
    unsigned short character  : 8;  // 00000000 ????????
    unsigned short foreground : 3;  // 00000??? 00000000
    unsigned short intensity  : 1;  // 0000?000 00000000
    unsigned short background : 3;  // 0???0000 00000000
    unsigned short blink      : 1;  // ?0000000 00000000
} screen[25][80];       // Array of bit fields

int main() {
    struct PERSON sister;   // C style structure declaration
    PERSON brother;   // C++ style structure declaration
    sister.age = 13;   // assign values to members
    brother.age = 7;
    cout << "sister.age = " << sister.age << '\n';
    cout << "brother.age = " << brother.age << '\n';

    CELL my_cell;
    my_cell.character = 1;
    cout << "my_cell.character = " << my_cell.character;
}
// Output:
// sister.age = 13
// brother.age = 7
// my_cell.character = 1