cppreference系列> C++ language> Types> Union
union
- 特殊的类类型,一次只能持有它的一个非static数据成员
- 可以有成员函数,但是没有虚函数
- 没有基类,也不能作为基类
- 不能有引用类型的数据成员
- 默认访问级别为public
- 大小为最大数据成员的大小
匿名union
int main() { union { int a; const char* p; }; a = 1; p = "Jennifer"; }
union-like class
#include <iostream> // S has one non-static data member (tag), three enumerator members, // and three variant members (c, n, d) struct S { enum {CHAR, INT, DOUBLE} tag; union { char c; int n; double d; }; }; void print_s(const S& s) { switch(s.tag) { case S::CHAR: std::cout << s.c << '\n'; break; case S::INT: std::cout << s.n << '\n'; break; case S::DOUBLE: std::cout << s.d << '\n'; break; } } int main() { S s = {S::CHAR, 'a'}; print_s(s); s.tag = S::INT; s.n = 123; print_s(s); }