一、聯合(union)概述
聯合(union)是一種特殊的類
一個union可以有多個數據成員,但是在任意時刻只有一個數據成員可以有值。當我們給union的某個成員賦值之后,該union的其它成員就變成未定義的狀態了。分配給一個union對象的存儲空間至少要能容納它的最大的數據成員
類的某些特性對union同樣適用,但并非所有特性都如此:
union不能含有引用類型的成員,union的成員可以是絕大多數類型。在C++11標準中,含有構造函數或析構函數的類類型也可以作為union的成員類型
union可以為其成員指定public、protected、private等標記。默認情況下union的成員都是公有的
union可以定義包括構造函數和析構函數在內的成員函數。但是由于union既不能繼承自其它類,也不能作為基類使用,所以在union中不能含有虛函數
二、定義union
union提供了一種有效的途徑使得我們可以方便地表示一組類型不同的互斥值
例如我們需要處理一些不同類型的數字數據和字符數據,則在此過程中可以定義一個union來保存這些值:
//Token類型的對象只有一個成員,該成員的類型可能是下列類型中的任意一種union Token {char cval;int ival;double dval;};