聯合(union)是一種特殊的類。乙個union物件可以有多個資料成員,但在任何時候,只有乙個成員可以有值。當將乙個值賦給union物件的乙個成員的時候,其它所有成員都變為未定義的。每個union物件的分配得到的空間大小在編譯時是固定的,至少與union的最大資料成員一樣大。
像任何類一樣,union可以指定保護標記使成員為public、protected或private。預設情況下,union跟struct一樣——除非另外指定,否則union成員均為public成員。union也可以定義成員函式,包括建構函式和析構函式,但不能作為基類使用,故成員函式不能為虛函式。union不能具有靜態資料成員或引用成員,而且不能具有定義了建構函式、析構函式或賦值操作符的類型別成員。
union最經常用作巢狀型別,其判別式是外圍類的乙個成員。經常使用switch語句測試判別式,然後根據union中當前儲存的值進行處理。不用於定義物件的未命名union稱為匿名聯合(anonymous union),其成員的名字出現在外圍作用域中。若匿名union沒提供訪問其成員的途徑,可將成員作為定義匿名union的作用域的一部分直接訪問。
程式設計技巧 節省空間
資料空間技術 如何減少程式所需要資料的儲存空間的技術 1,不儲存,重新計算。如果我們在需要某乙個給定物件的任何時候,都對其進行重新計算而不儲存,就可以減少該物件所需的空間。該方法用計算時間換空間,只使用於需要儲存的物件可以根據其描述重新計算得到的情況。2,稀疏資料結構 例1 稀疏矩陣的的儲存 很多個...
移動設計空間節省之道
設計 於生活。最近在裝修自己的房間,翻閱了一些相關的家居設計資料,發現互動設計和家居設計有很多相似的地方。小戶型空間有限,手機螢幕也只有巴掌大小,在兩種小空間上進行設計一定很多共通之道。攜程ued的同學也是心有靈犀,很早就為我們奉獻了一回精彩的分析 對於這麼有意思的主題,還是想多嘮叨幾句。1.聚 即...
防止動態繫結,節省大量空間
高階程式設計技巧 學習筆記 1.1 問題 如何降低這些大量例項的記憶體開銷?動態繫結屬性問題 1.2 解決方案 定義類的 slots 屬性,宣告例項有哪些屬性 關閉動態繫結屬性 import sys 兩個類,player1 開啟動態繫結,player2 關閉動態繫結 class player1 ob...