union關鍵字
union 維護足夠的空間來置放多個資料成員中的「一種」,而不是為每乙個資料成員配置空間,在union 中所有的資料成員共用乙個空間,同一時間只能儲存其中乙個資料成員,所有的資料成員具有
unionstatemachine
addr;
特性:1、所有資料成員中共享乙個位址。
這個union中最長的變數型別是double,所以整個union占用的空間是double占用的空間。
sizeof
(addr)返回8。即整個union的長度是8。
2、乙個union變數只能有標識多個資料成員的一種。
addr.number輸出是0,因為此時union空間裡裝的是double exp。實際上,number的輸出是double exp的低位(小端)。
可以通過union做一些有趣的事。
1.大端小端的判斷。
大端小段的判斷,列印1就是小端。
#include
usingnamespacestd;
intmain()addr;
addr.a=1;
cout<
2.取類成員函式位址(取自thunk技術的一部分)
typedefvoid(_stdcallcbuttondemobho::*tmfp)();
//union巧取成員變數位址
union addr;
addr.method =(tmfp)&cbuttondemobho::pagescaner;
union addr;
這裡addr.func的值就是類成員函式的位址。因為成員函式是乙個獨有的型別,不能強制轉換,所以用union逃避型別檢查。
const成員函式和mutable關鍵字
一 const成員函式 class myclass public void fun const private int m nvalue const成員函式內不能修改成員變數的值,也不能呼叫非const成員函式。const物件只能呼叫const成員函式。二 mutable關鍵字 class mycl...
C語言union關鍵字
union 關鍵字的用法與struct 的用法非常類似。union 維護足夠的空間來置放多個資料成員中的 一種 而不是為每乙個資料成員配置空間,在union 中所有的資料成員共用乙個空間,同一時間只能儲存其中乙個資料成員,所有的資料成員具有相同的起始位址。例子如下 union statemachin...
C語言union關鍵字
今天看union,不是很記得其作用了。本文摘自c語言中文網,解釋的很好,學到了東西。union 維護足夠的空間來置放多個資料成員中的 一種 而不是為每乙個資料成員配置空間,在union 中所有的資料成員共用乙個空間,同一時間只能儲存其中乙個資料成員,所有的資料成員具有相同的起始位址。例子如下 uni...