型別識別
typeid:用於返回表示式的型別
dynamic_cast:用於將基類的指標或引用安全的轉換成派生類的指標或引用
base &b1,*b2;//base是基類 derived是派生類
derived &d = dynamic_cast(b1);
derived *d = dynamic_cast(b2);
int x;
typeid(x);
typeid(b1);
typeid(d);
列舉型別
enum:列舉值預設從0開始依次加1,也可以指定列舉值,可以加型別限制,列舉成員是const。
enum color;
color co = color::red;
enum sto ;
int o = sto::green;
enum class pepr;//列舉成員被隱藏
類的成員指標
scree myscree, *pscree = &myscree;
auto pmf = &scree::get;
char c1 = (pscree->*pmf)();
char c2 = (myscree.*pmf)(2, 2);
union
一種節省空間的類
乙個union可以有多個資料成員,但是在任意時刻只有乙個資料成員。
union token
token() {}
};只有公有成員並不含建構函式時才能用,該初始值被用於初始化第乙個成員,故只能有乙個。
token fir_to = ;
token *to = new token;
to->cval = 'a';
匿名union不能包含受保護的成員或私有成員,也不能定義成員函式。
union ;
巢狀類:定義在乙個另乙個類的內部。
區域性類:定義在乙個函式的內部。
extren "c"
可以用c++**呼叫其他語言編寫的**,前提編譯器要相容這些語言。
使用一般要放在標頭檔案中
extren "c"
pf指向乙個c函式
extren "c" void(*pf)(int);
C 特殊工具與技術
1 allocator類 allocator類是c 的乙個模板,它提供型別化的記憶體分配以及物件的分配和撤銷。item base pitem new item base allocatora a.allocate 100 2 rtti 程式能夠使用基類的指標或引用來檢查這些指標或引用所指的物件的實際...
第18章 特殊工具與技術 4
18.1.6 類特定的new和delete 編譯器看到類型別的new或delete表示式的時候,它檢視該類是否有operator new或operator delete成員,如果類定義 或繼承 了自己的成員new和delete函式,則使用那些函式為物件分配和釋放記憶體 否則,呼叫這些函式的標準庫版本...
第18章 特殊工具與技術 5
18.2 執行時型別識別 通過執行時型別識別 rtti 程式能夠使用基類的指標或引用來檢索這些指標或引用所指物件的實際派生型別。通過下面兩個操作符提供rtti 1 typeid操作符,返回指標或引用所指物件的實際型別。2 dynamic cast操作符,將基類型別的指標或引用安全地轉換為派生型別的指...