C++語言
-
隱式型別轉換、
- 系統自動進行、
-
顯示型別轉換、(強制型別轉換)
-
C語言中的兩種強制型別轉換、
-
int a=5%(int)3.2
-
int a = 5% int (3.2)
-
以上兩個方法均可以將浮點型強制轉換 為int型、但是會丟失精度、
-
C++中有四種轉換強制轉換、目的是提供更豐富的含義和功能、
-
static_cast、
-
靜態轉換、編譯時進行型別轉換檢查、
-
相關型別風格轉換、
-
double a = 2.32; int b = (int)a;//C語言的轉換方式、 int c = static_cast<int>(a);//C ++的強制轉換 -
整型轉實性、
-
子類轉父類、
-
void*(無型別指標、可以指向任何指標型別)與其他型別指標、型別之間轉換、
-
-
dynamic_cast、
- 常用于運行時型別識別和檢查、主要用來父型別于子型別之間轉換的、(父型別指標指向子型別轉)、
- 這四種強制型別轉換中唯一在運行時進行轉換的、其余均是在編譯時轉換、
-
const_cast、
-
去除指標和const屬性、將const性質強制轉換掉(去除掉)、
-
編譯時進行型別轉換、
-
const int a = 10; const int* b = &a; int* c = const_cast<int*>(b); *c = 20;//寫值行為、屬于未定義行為、結果會不確定、 cout << a << endl; cout << *b << endl; -
功能單一、只能去除指標及其const屬性、
-
-
reinterpret_cast、
-
重新解釋、將操作內容解釋為另一種不同的型別、將運算元的型別轉換、
-
處理無關型別的轉換、兩個轉換型別之間沒有任何關系、
-
常用于、將一個整形(地址)轉成指標、一種型別的指標轉換成另一種型別的指標、按照轉換后的型別重新解釋記憶體內的內容、
-
int a = 6; int* b = &a; int* c = reinterpret_cast<int*>(b); char* d = reinterpret_cast<char*>(b);
-
-
可以將2位元組轉換為4位元組或者8位元組、當然也可以讓8位元組或者其它位元組轉換為別的位元組、8轉2或4均可、
-
-
以上四個均成為命名的強制型別轉換、
-
通用形式、
-
強制型別轉換名(即以上4個命名)<轉換目標型別>(要轉換的值);
- 型別轉換就是為了讓編譯器不報錯而存在的、
-
-
-
總結、
- 型別轉換少用因為會干擾系統的型別檢查、
-
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/151416.html
標籤:C++
