74. C++ union 사용법
1. 개요
1.1 문서 개요
이 문서는 C++에서 union
의 개념과 선언 방식, 그리고 사용법에 대해 정리합니다. union
은 여러 멤버가 같은 메모리 공간을 공유하는 특수한 사용자 정의 자료형입니다.
2. 내용
2.1 union의 정의와 메모리 구조
2.1.1 선언 예시
union Data {
int i;
float f;
char c;
};
2.1.2 메모리 구조
모든 멤버는 동일한 메모리 공간을 공유하므로, 한 시점에 하나의 값만 저장 가능하며, 가장 큰 멤버 크기만큼 메모리를 차지합니다.
2.2 union의 사용 예시
Data d;
d.i = 100;
std::cout << d.i << std::endl;
d.f = 3.14f;
std::cout << d.f << std::endl;
2.3 union의 제한 사항
- 한 번에 하나의 멤버만 유효
- 마지막으로 대입한 멤버만 유효하게 접근 가능
- 구조체나 클래스와 달리 타입 안정성(type safety)이 낮음
2.4 익명 union
C++에서는 익명 union도 정의할 수 있으며, 구조체 내에 삽입 가능함
struct Mixed {
union {
int i;
float f;
};
char label;
};
이 경우 i
와 f
는 Mixed
객체에서 직접 접근할 수 있습니다.
3. 마무리
union
은 메모리 절약을 위해 특정 상황에서 사용되며, 여러 데이터 타입을 같은 메모리 공간에 저장하고자 할 때 유용합니다. 단, 사용 시 데이터 손상 위험과 타입 관리에 주의가 필요합니다.