다음을 통해 공유


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 키워드를 참조하십시오.

  • tag
    구조체에 지정된 형식 이름입니다. 태그는 구조체의 범위 내에서 예약어가 됩니다. 태그는 선택 사항입니다. 생략할 경우 익명 구조체가 정의됩니다. 자세한 내용은 익명 클래스 형식을 참조하십시오.

  • base-list
    이 구조체가 해당 멤버를 파생할 클래스 또는 구조체의 선택적 목록입니다. 자세한 내용은 기본 클래스를 참조하십시오. 각 기본 클래스 또는 구조체 이름 앞에는 액세스 지정자(public, private, protected) 및 virtual 키워드가 올 수 있습니다. 자세한 내용은 클래스 멤버에 대한 액세스 제어의 멤버 액세스 테이블을 참조하십시오.

  • member-list
    구조체 멤버 목록입니다. 자세한 내용은 클래스 멤버를 참조하십시오. 여기에서 유일한 차이점은 class 대신 struct가 사용된다는 점입니다.

  • declarators
    클래스의 이름을 지정하는 선언자 목록입니다. 선언자 목록은 구조체 형식의 하나 이상의 인스턴스를 선언합니다. 선언자는 클래스의 모든 데이터 멤버가 public인 경우 이니셜라이저 목록을 포함할 수 있습니다. 데이터 멤버가 기본적으로 public이므로 구조체에서 이니셜라이저 목록이 공통입니다. 자세한 내용은 선언자 개요를 참조하십시오.

설명

구조체 형식은 사용자 정의 복합 형식입니다. 이 형식은 다른 형식을 가질 수 있는 필드 또는 멤버로 구성됩니다.

C++에서 구조체는 클래스와 동일하지만 해당 멤버가 기본적으로 public이라는 점이 다릅니다.

관리되는 클래스 및 구조체에 대한 자세한 내용은 클래스 및 구조체를 참조하십시오.

구조체 사용

C에서 struct 키워드를 명시적으로 사용하여 구조체를 선언해야 합니다. C++에서는 형식을 정의한 후 struct 키워드를 사용할 필요가 없습니다.

닫는 중괄호와 세미콜론 사이에 쉼표로 구분된 변수 이름을 하나 이상 넣어 구조체 형식이 정의될 때 변수를 선언하는 옵션이 있습니다.

구조체 변수를 초기화할 수 있습니다. 각 변수의 초기화는 중괄호로 묶어야 합니다.

자세한 내용은 클래스, 공용 구조체열거형을 참조하십시오.

예제

#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

참고 항목

참조

클래스 형식 정의