聯合(union)是一種節省空間的特殊的類,一個union可以有多個數據成員,但是在任意時刻只有一個數據成員可以有值。當某個成員被賦值後其他成員變爲未定義狀態。聯合有如下特點:
-
默認訪問控制符爲 public
- 可以含有構造函數、析構函數
- 不能含有引用類型的成員
- 不能繼承自其他類,不能作爲基類
- 不能含有虛函數
- 匿名 union 在定義所在作用域可直接訪問 union 成員
- 匿名 union 不能包含 protected 成員或 private 成員
- 全局匿名聯合必須是靜態(static)的
union使用
union使用示例
#include<iostream>
union UnionTest {
UnionTest() : i(10) {};
int i;
double d;
};
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
i = 30;
std::cout << i << std::endl; // 輸出局部匿名聯合的 30
return 0;
}