C++類中嵌套enum(枚舉)、union(聯合)、struct(結構體)類型

1、枚舉

#include <iostream>

using namespace std;

class test
{
public:
	enum type{
	    One=2,Two, Three
        };

	test():t(One) {}
	type getT() {return t;}

private:
	type t;
};

int main()
{
	test s;
	cout << sizeof(test)<<endl; //4
	cout<<s.getT()<<endl; //2
	cout << test::Three<<endl; //4
	return 0;
}

此時類的大小是一個int型變量的大小。取得的枚舉是一個整形。可以通過類域訪問到枚舉值。

爲什麼通過 類::enum值可以訪問枚舉值?
因爲該枚舉是一個常量,在編譯的時候已經被放入了常量區。調用的時候因此不需要該枚舉的變量也可以調用。

注意:枚舉類型不具備名字空間的作用。在一個作用域中在,如果兩個枚舉類型的值相同,則會編譯出錯。

      struct CEType
               {
                   enum EType1 { e1, e2 };
                   enum EType2 { e1, e2 };
               };

e1,e2名字相同程序會報錯。

參考:
1、C++類中的枚舉類型
2、https://blog.csdn.net/WizardtoH/article/details/81010433

2、聯合、

這個主要是看侯捷先生的內存管理的視頻,在寫類自己的allocator時(內存管理視頻13,per_class allocator 2),看到的一個例子:
在這裏插入圖片描述

1、對於class Airplane中的union,它是一個匿名的union,圖片上面有解釋,若加上名稱便是type定義式,未加名稱則是anonymous union,{ }內便是變數聲明。

2、類的成員都可以直接使用union中聲明的變量rep以及next

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章