構造体 (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 のキーワードを参照してください。tag
構造体に指定された型名。タグは構造体のスコープ内で予約語になります。タグは省略可能です。省略した場合無名構造を定義します。詳細については匿名クラス型 を参照してください。base-list
クラスまたは構造体のオプションの一覧についてはこの構造体メンバーを取得します。詳細については、「基本クラス」を参照してください。各基本クラスや構造体名はアクセス指定子 (パブリックプライベートプロテクト) と 仮想 のキーワードの前にキーワードを指定することができます。詳細についてはクラス メンバーへのアクセスの制御 のメンバー アクセスの表を参照してください。member-list
構造体メンバーの一覧。詳細については、「クラス メンバー」を参照してください。次の唯一の違いはstruct が class の代わりに使用されます。declarators
クラスの名前を指定する宣言リスト。宣言リストは構造体の型の一つ以上のインスタンスを宣言します。宣言はクラスのすべてのデータ メンバーが public の初期化子リストが含まれる場合があります。初期化子リストはデータ メンバーに既定では public であるため構造体で共通です。詳細については、「宣言の概要」を参照してください。
解説
構造体の型はユーザー定義の複合型です。これはフィールドの型を持つことができるメンバーで構成されます。
C++ では構造体はクラスと同じですがメンバーは既定で public です。
マネージ クラスと構造体の詳細についてはクラスと構造体 を参照してください。
を使用して構造
C では明示的に構造体を宣言するために struct のキーワードを使用する必要があります。C++ ではこれは型が定義されている場合は不要です。
構造体の型がセミコロンと右中かっこの間に一つ以上のコンマ区切りの変数名を指定して定義したときに変数の宣言の方法があります。
構造体変数は初期化できます。各変数の初期化が中かっこで囲む必要があります。
関連情報についてはクラス共用体 と 列挙 を参照してください。
使用例
// struct1.cpp
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
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;
}
struct POINT { // Declare POINT structure
int x; // Define members x and y
int y;
} spot = { 20, 40 }; // Variable spot has
// values x = 20, y = 40
struct POINT there; // Variable there has POINT type
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