struct (C++)

struct 关键字定义结构类型和/或结构类型的变量。

语法

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

参数

template-spec
可选模板规范。 有关详细信息,请参阅模板规范

struct
struct 关键字。

ms-decl-spec
可选存储类规范。 有关详细信息,请参阅 __declspec 关键字。

标签
为结构提供的类型名称。 标记将变成结构范围内的保留字。 标记是可选项。 如果省略,则定义匿名结构。 有关详细信息,请参阅匿名类类型

base-list
此结构将从中派生其成员的类或结构的可选列表。 有关详细信息,请参阅基类。 每个基类或结构名称的前面可具有访问说明符(publicprivateprotected)和 virtual 关键字。 有关详细信息,请参阅控制对类成员的访问中的成员访问表。

member-list
结构成员列表。 有关详细信息,请参阅类成员概述。 这里的唯一区别是,使用 struct 代替了 class

declarators
指定结构名称的声明符列表。 声明符列表声明了一个或多个结构类型实例。 如果结构的所有数据成员是 public,则声明符可包含初始值设定项列表。 初始值设定项列表在结构中很常见,因为数据成员默认为 public。 有关详细信息,请参阅声明符概述

注解

结构类型是用户定义的复合类型。 它由可具有不同类型的字段或成员构成。

在 C++ 中,结构与类相同,只不过其成员默认为 public

有关 C++/CLI 中托管类和结构的信息,请参阅类和结构

使用结构

在 C 中,必须显式使用 struct 关键字来声明结构。 在 C++ 中,不需要在定义该类型之后使用 struct 关键字。

可以选择在定义结构类型时,通过在右大括号和分号之间放置一个或多个逗号分隔的变量名称来声明变量。

可以初始化结构变量。 每个变量的初始化必须括在大括号中。

相关信息,请参阅 classunionenum

示例

#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