?1.static_cast,const_cast和reinterpret_cast類型轉換
? ? ? ? ? ? ? static_cast:強制的類型轉換(不能用于底層的const轉換),以前C語言中的強制類型轉換都可以使用static_cast來完成。如:int i=3; double j=static_cast<double>(i);
? ? ? ? ? ? ? const_cast:改變底層const(指針常量,常量引用),但不能用于改變變量的類型。改變底層const強制轉換的過程中,如果需要修改底層的對象時,如果底層對象是非常量,則可以修改,否則出現未定義的問題。如:?
const char *pc; char *p=const_cast<char *>(pc);
? ? ? ? ? ? ? reinterpret_cast:重新解釋原有對象,比如說整型指針轉化為字符型指針,
int *p; char *pc=reinterpret_cast<char *>(p);
? ? ? ? ? ? ? 強制類型轉換干擾了正常的類型檢查,盡量少用強制類型轉換,尤其是static_cast,reinterpret_cast.
?
?2.運算符優先級
? ? ? ? ? ? ? ? 運算符的優先級可以通過口訣來記憶,“單算移關與,異或邏條賦”,具體運算優先級如下所示:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ??