52 lines
844 B
C++
52 lines
844 B
C++
/**
|
|
* @file union.cpp
|
|
* @brief UNION
|
|
* @author 光城
|
|
* @version v1
|
|
* @date 2019-08-06
|
|
*/
|
|
|
|
#include <iostream>
|
|
/**
|
|
* 默认访问控制符为public
|
|
*/
|
|
union UnionTest {
|
|
/**
|
|
* 可以含有构造函数、析构函数
|
|
*/
|
|
UnionTest() : i(10) { print(i); };
|
|
~UnionTest(){};
|
|
int i;
|
|
|
|
private:
|
|
void print(int i) { std::cout << i << std::endl; };
|
|
};
|
|
/**
|
|
* 全局匿名联合必须是静态的
|
|
*/
|
|
static union {
|
|
int i;
|
|
double d;
|
|
};
|
|
|
|
int main() {
|
|
UnionTest u;
|
|
|
|
union {
|
|
int i;
|
|
double d;
|
|
};
|
|
|
|
std::cout << u.i << std::endl; // 输出 UnionTest 联合的 10
|
|
|
|
::i = 20;
|
|
std::cout << ::i << std::endl; // 输出全局静态匿名联合的 20
|
|
/**
|
|
* 匿名union在定义所在作用域可直接访问union成员
|
|
*/
|
|
i = 30;
|
|
std::cout << i << std::endl; // 输出局部匿名联合的 30
|
|
|
|
return 0;
|
|
}
|