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