<<c++ primer>> 強制類型轉換


參見<<c++ primer>> p160頁


顯示強制類型很危險(問題源於類型已經改變時編譯器沒有提供任何警告或錯誤提示),儘量少用


=-=-=-=-=-=-=-=-=-=-=-=-=dynamic_cast-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=



=-=-=-=-=-=-=-=-=-=-=-=-=-const_cast=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=
char* string_copy(char *){return NULL;}
const char *pc_str;
char *pc = string_copy(const_cast<char*>(pc_str) );// 只有使用const_cast才能將const性質轉換掉



=-=-=-=-=-=-=-=-=-=-=-=-static_cast=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=
//編譯器隱式執行的任何類型轉換都可以由static_cast顯式完成

double d = 97.06;
char ch = static_cast<char>(d);

void *p = &d;
double *dp = static_cast<double*>(p);//通過static_cast將存放在void* 中的指針值強制轉換爲原來的指針類型,



=-=-=-=-=-=-=-=-=-=-=-=-=-=reinterpret_cast-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=--=
int iA = 88;
int *ip = &iA;
char *pchar = reinterpret_cast<char*>(ip);//reinterpret_cast本質上依賴於機器,爲安全使用reinterpret_cast,要求程序員完全理解所涉及的數據類型,以及編譯器實現強制類型轉換的細節
string str(pchar);//編譯器無法知道pchar實際上是指向int型對象的指針


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