struct (C++)

La palabra clave struct define un tipo de estructura o una variable de un tipo de estructura.

Sintaxis

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

Parámetros

template-spec
Especificaciones de plantilla opcionales. Para más información, consulte Especificaciones de plantilla.

struct
La palabra clave struct.

ms-decl-spec
Especificación opcional de clase de almacenamiento. Para más información, consulte la palabra clave __declspec.

tag
Nombre del tipo dado a la estructura. La etiqueta se convierte en una palabra reservada dentro del ámbito de la estructura. La etiqueta es opcional. Si se omite, se define una estructura anónima. Para más información, consulte Tipos de clase anónimos.

base-list
La lista opcional de clases o de estructuras de la que esta estructura derivará sus miembros. Consulte Clases base para más información. Cada nombre de clase base o de estructura puede ir precedido de un especificador de acceso (public, private, protected) y la palabra clave virtual. Consulte la tabla de acceso a miembros en Controlar el acceso a los miembros de clase para más información.

member-list
Lista de miembros de la estructura. Consulte Información general sobre miembros de clase para más información. La única diferencia aquí es que se utiliza struct en lugar de class.

declarators
Lista de declaradores que especifican los nombres de la estructura. Las listas de declaradores declaran una o más instancias del tipo de estructura. Los declaradores pueden incluir listas de inicializadores si todos los miembros de datos de la estructura son public. Las listas de inicializadores son comunes en estructuras porque los miembros de datos son public de forma predeterminada. Consulte Información general sobre declaradores para más información.

Comentarios

Un tipo de estructura es un tipo compuesto definido por el usuario. Se compone de campos o de miembros que pueden tener diferentes tipos.

En C++, una estructura es igual que una clase salvo que sus miembros son public de forma predeterminada.

Para obtener información sobre las clases y estructuras administradas en C++/CLI, consulte Clases y estructuras.

Uso de una estructura

En C, debe utilizar explícitamente la palabra clave struct para declarar una estructura. En C++, no es necesario usar la palabra clave struct una vez definido el tipo.

Tiene la opción de declarar variables al definir el tipo de estructura, para lo cual debe insertar uno o más nombres de variable separados por comas entre la llave de cierre y el punto y coma.

Las variables de estructura se pueden inicializar. La inicialización de cada variable se debe incluir entre llaves.

Para obtener información relacionada, consulte clase, unión y enumeración.

Ejemplo

#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