Condividi tramite


struct (C++)

La struct parola chiave definisce un tipo di struttura e/o una variabile di un tipo di struttura.

Sintassi

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

Parametri

specifica di modello
Specifiche facoltative del modello. Per altre informazioni, vedere Specifiche del modello.

struct
La parola chiave struct.

ms-decl-spec
Specifica della classe di archiviazione facoltativa. Per altre informazioni, vedere la parola chiave __declspec .

tag
Nome del tipo assegnato alla struttura. Il tag diventa una parola riservata nell'ambito della struttura. Il tag è facoltativo. Se omesso, viene definita una struttura anonima. Per altre informazioni, vedere Tipi di classe anonimi.

base-list
Elenco facoltativo delle classi o delle strutture da cui questa struttura deriverà i relativi membri. Per altre informazioni, vedere Classi di base. Ogni nome di classe o struttura di base può essere preceduto da un identificatore di accesso (public, private, protected) e dalla parola chiave virtual. Per altre informazioni, vedere la tabella di accesso ai membri membro in Controllo dell'accesso ai membri della classe.

member-list
Elenco dei membri della struttura. Per altre informazioni, vedere Cenni preliminari sui membri della classe. L'unica differenza è che struct viene usata al posto di class.

declarators
Elenco dichiaratore che specifica i nomi della struttura. Gli elenchi dei dichiaratori dichiarano una o più istanze del tipo di struttura. I dichiaratori possono includere elenchi di inizializzatori se tutti i membri dati della struttura sono public. Gli elenchi di inizializzatori sono comuni nelle strutture perché i membri dati sono public per impostazione predefinita. Per altre informazioni, vedere Panoramica dei dichiaratori .

Osservazioni:

Un tipo di struttura è un tipo composto definito dall'utente. È composto da campi o membri che possono avere tipi diversi.

In C++, una struttura è uguale a una classe, ad eccezione del fatto che i relativi membri sono public per impostazione predefinita.

Per informazioni su classi e struct gestiti in C++/CLI, vedere Classi e struct.

Utilizzo di una struttura

In C è necessario usare in modo esplicito la struct parola chiave per dichiarare una struttura. In C++, non è necessario usare la struct parola chiave dopo che il tipo è stato definito.

È possibile dichiarare delle variabili quando il tipo di struttura viene definito inserendo uno o più nomi di variabili delimitati da virgole tra la parentesi graffa di chiusura e il punto e virgola.

Le variabili di struttura possono essere inizializzate. L'inizializzazione per ogni variabile deve essere racchiusa in parentesi graffe.

Per informazioni correlate, vedere classe, unione ed enumerazione.

Esempio

#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