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