型別轉換_static_cast和reinterpret_cast
阿新 • • 發佈:2019-01-22
傳智掃地僧課程學習筆記。
/* C風格的強制型別轉換(Type Cast)很簡單,不管什麼型別的轉換統統是: TYPE b = (TYPE)a C++風格的型別轉換提供了4種類型轉換操作符來應對不同場合的應用。 static_cast 靜態型別轉換。如int轉換成char reinterpreter_cast 重新解釋型別 dynamic_cast 命名上理解是動態型別轉換。如子類和父類之間的多型型別轉換。 const_cast, 字面上理解就是去const屬性。 4種類型轉換的格式: TYPE B = static_cast<TYPE> (a) */ double dpi = 3.1415926; int num = dpi;//隱式型別轉換 int num1 = (int)dpi;//C型別轉換 int num2 = static_cast<int>(dpi);//能做隱式的,靜態一般都行,如果有錯誤會提示 char *p1 = "hello ...itcast"; int *p2 = NULL; //p2 = static_cast<int *>(p1);//error p2 = reinterpret_cast<int *>(p1);//有強制型別轉換的味道, cout<< p1<<endl;//%s 打印出來的是字串 cout<< p2<<endl;//%d 打印出來的是地址