다음을 통해 공유


공용 구조체

A union (개체 배열 또는 클래스 형식이 될 수 있지만), 언제 든 지 구성원 목록에서 개체를 하나만 들어 있는 사용자 정의 데이터 나 클래스 형식입니다.

union [tag] { member-list } [declarators];
[union] tag declarators;

매개 변수

  • tag
    공용 구조체에 지정 된 형식 이름입니다.

  • member-list
    공용 구조체는 데이터 형식 목록이 포함 될 수 있습니다.설명 부분을 참조하십시오.

  • declarators
    선언 자 목록 공용 구조체의 이름이 지정 됩니다.자세한 내용은 선언 자 개요를 참조하십시오.

설명

해당 멤버 목록 합집합의 합집합을 포함할 수 있는 데이터 종류를 나타냅니다.충분 한 스토리지의 가장 큰 멤버를 보유 하는 공용 구조체 필요의 멤버 목록.자세한 내용은 참조 하십시오 Union 선언 (C 언어 참조).

공용 구조체를 선언합니다.

Union 키워드를 사용 하 여 공용 구조체의 선언 시작 및 구성원 목록을 중괄호로 묶습니다.

// declaring_a_union.cpp
union DATATYPE    // Declare union type
{
    char   ch;
    int    i;
    long   l;
    float  f;
    double d;
} var1;          // Optional declaration of union variable

int main()
{
}

공용 구조체를 사용 하 여

C + + 공용 구조체는 제한 된 클래스 형식입니다.액세스 지정자 (공개, 보호, 개인) 멤버 및 멤버 함수, 생성자 및 소멸자를 포함 하 여이 포함 될 수 있습니다.가상 함수 또는 정적 데이터 멤버를 사용할 수 없습니다.기본 클래스로 사용할 수 없습니다 없으며 기본 클래스를 가질 수 있습니다.기본 액세스는 공용 구조체의 멤버는 공용입니다.

C union 형식 데이터 멤버만 포함할 수 있습니다.

C를 사용 하 여는 union 공용 구조체 변수를 선언 하는 키워드입니다.C + +에서 union 키워드가 필요 하지 않습니다.

union DATATYPE var2;   // C declaration of a union variable
DATATYPE var3;         // C++ declaration of a union variable

Union 형식의 변수를 공용 구조체에 선언 된 모든 형식의 값을 보유할 수 있습니다.멤버 선택 연산자 사용 (.)는 공용 구조체의 멤버에 액세스 합니다.

var1.i = 6;           // Use variable as integer
var2.d = 5.327;       // Use variable as double 

선언 하 고 중괄호 안에 식을 지정 하 여 동일한 문에 union을 초기화할 수 있습니다.식이 평가 되 고 공용 구조체의 첫 번째 필드에 할당 합니다.

예제

// using_a_union.cpp
#include <stdio.h>

union NumericType
{
    int         iValue;
    long        lValue;  
    double      dValue;  
};

int main()
{
    union NumericType Values = { 10 };   // iValue = 10
    printf_s("%d\n", Values.iValue);
    Values.dValue = 3.1416;
    printf_s("%f\n", Values.dValue);
}

Output

10
3.141600

NumericType Union입니다 배열 메모리에 (개념적으로) 다음 그림에 나와 있는 것 처럼.

NumericType 공용 구조체의 데이터 저장소

숫자 형식 공용 데이터 저장소

참고 항목

참조

클래스, 구조체 및 공용 구조체

C + + 키워드

익명 공용 구조체

클래스 (C++)

구조체 (C++)