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);
}
原文链接: https://www.cnblogs.com/chenkkkabc/archive/2013/04/20/3032624.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/85351
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!