1. 程式人生 > 其它 >C++結構體、聯合體、列舉類

C++結構體、聯合體、列舉類

技術標籤:C++語法c++

一、結構體

  • 結構體是一種特殊形態的類。
  • 與類唯一的區別:
  • 類的預設訪問許可權是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
  • 轉換限制,列舉類物件不可以與整型隱式地互相轉換。
  • 可以指定底層型別