C++結構體、聯合體、列舉類
阿新 • • 發佈:2021-02-03
一、結構體
- 結構體是一種特殊形態的類。
- 與類唯一的區別:
- 類的預設訪問許可權是private,結構體的預設訪問許可權是public
- 結構體中可以有資料成員和函式成員
結構體的初始化
如果:
- 一個結構體的全部資料成員都是公共成員;
- 沒有使用者定義的建構函式;
- 沒有基類和虛擬函式
這個結構體的變數可以用下面的語法形式初始化:
型別名 變數名 = {成員資料1初值, 成員資料2初值,......};
二、聯合體
定義形式:
union 聯合體名稱{
公有成員
protected:
保護型成員
private:
私有成員
};
特點:
- 成員共用同一組記憶體單元
- 任何兩個成員不會同時有效
聯合體的記憶體分配:
union Mark{ //表示成績的聯合體
char grade; //等級制的成績
bool pass; //只記是否通過課程的成績
int percent; //百分制的成績
};
上面聯合體的記憶體分配如下圖:
無名聯合
union {
int i;
float f;
}
在程式中可以這樣使用:
i = 10;
f = 2.2;
三、列舉類(強型別列舉)
列舉類定義
- 語法形式:
enum class 列舉型別名:底層型別{列舉值列表};
- 例:
enum class Type{ General, Light, Medium, Heavy };
enum class Type : char { General, Light, Medium, Heavy };
enum class Category{ General=1, Pistol, MachineGun, Cannon };
列舉類的優勢
- 強作用域,其作用域限制在列舉類中。
例:使用Type::Gereral - 轉換限制,列舉類物件不可以與整型隱式地互相轉換。
- 可以指定底層型別