C++ 對 struct 進行了重大擴充:
struct 關鍵字,也無需 typedef。Room r[3] = {{1,101},{2,201},{3,301}});一旦定義任意構造函數,花括號初始化即失效。sizeof 需考慮成員對齊導致的填充字節。聯合體成員共享同一塊內存,大小由最大成員決定。修改任一成員會影響所有其他成員。
union TestUnion { char c; int i; };
// sizeof(TestUnion) == 4 (由 int 決定)
TestUnion u; u.c = 'A'; // 此時 u.i 的低位字節變為 0x41,高位保持原值
union { char a; int b; }; // 匿名聯合體
a = 'X'; // 直接訪問,等價於修改 b 的低位字節
struct 是「默認 public 的 class」,union 是「共享內存的特殊類」,兩者均支援面向對象特性,但語義與限制截然不同。善用 struct 封裝純數據聚合,用 union 實現類型雙關或節省內存。