volatile關鍵字
表示該變量易變,每次在訪問該關鍵字修飾的變量時都要讀內存,不對其進行優化。
mutable關鍵字
類的常成員函數在語義上是不允許修改類的成員變量的,但是有時候可能根據代碼的需要並不是這么絕對。那么就可以使用mutable聲明一個類的成員變量,它告訴編譯器類的常成員函數可以修改這個變量。
explicit關鍵字
修飾構造函數,通常用作 構造函數靜止隱式轉換。
四種類型轉換
1. const_cast
去掉類型的const或volatile屬性。
const int a=10; int &b=const_case<int&>(a);
2. static_cast
靜態類型轉換,用於類型間強制轉換。用於:
(1)基類和子類轉換,子類指針轉父類是安全的,父類轉子類不安全。
(2)基本數據類型轉換。
(3)空指針轉換成目標類型指針。
(4)轉換為void類型
int n=1; double d=static_cast<double>(n); int *pn=&n; double *d=static_cast<double*>(&n); void *p = static_case<void*>(pn);
3.dynamic_cast
動態類型轉換,運行時類型安全檢查(轉換失敗返回NULL)
1.安全基類和子類轉換,基類轉子類會失敗。
2.必須有虛函數。
3.相同基類不同子類間轉換,結果為NULL。
4.reinterpret_cast
重新解釋類型,沒有進行二進制轉換。
一般用在函數指針類型之間轉換。